首页 > 解决方案 > 如何将变量值添加到java中另一个变量的名称?

问题描述

我正在尝试制作一个我的世界插件。我希望它为每个玩家创建变量。我在循环中使用“for”。我正在尝试将播放器的名称添加到变量的名称中。任何人都可以帮忙吗?

String name = "";
            for (Player p : Bukkit.getOnlinePlayers()) {
                name = p.getName();
                int cheatdetection+name = 0;
                int looking = (Math.round(p.getLocation().getPitch()) + 270) % 360;
                int currentlooking = looking;
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {                      
                    if(looking > currentlooking+20 || looking < currentlooking-20) {
                        cheatdetection+name++;
                    }
                }
                if(cheatdetection >= 10) {
                    Bukkit.getBanList(Type.NAME).addBan(p.getName(), "You have been banned for using Baritone", todate1, "HackMiner Detection");
                    p.kickPlayer("HackMiner Detection");
                }
            }

标签: javapluginsminecraftbukkit

解决方案


听起来您想要一个地图,每个玩家都有一把钥匙。Map 在一个变量(键)和另一个变量(值)之间创建关联。使用 put(key, value) 方法设置值,并使用 'get(key)' 检索它们

// Create an Integer counter for every player, initialized to zero.
Map<Player, Integer> playerCheatCounter = new HashMap<>();
for (Player p : Bukkit.getOnlinePlayers()) {
   playerCheatCounter.put(p, 0);
}

// Now to use it:
for (Player p : Bukkit.getOnlinePlayers()) {
  int looking = p.getPitch();
  Thread.sleep(10)
  int currentlyLooking = p.getPitch();
  if (looking > currentlyLooking + 20) {
    // Increment counter for the current player
    playerCheatCounter.put(p, 1 + playerCheatCounter.get(p));
    // Check the stored value for the current player
    if (playerCheatCounter.get(p) > 10) {
     // Ban player
    }
  }
 }

编辑:修正了一些语法错误


推荐阅读