用于循环检查播放器位置的java
这是一个Bukkit插件,用于Minecraft,使用他们的API
我试图检查一个玩家是否在指定的位置,如果他们在,那么不要将玩家传送到那里。相反,检查另一个位置,如果该位置为空,则在该位置生成玩家
下面的代码可以更好地解释这一点:
Player player = (Player) sender;
List< Player> prisoners = new ArrayList< Player>();
for (int i = 0; i < prisoners.size(); i++) {
//loc(1-12) are coords in the form of a location variable. I just wanted to save some room.
if (!(loc1 == prisoners.get(i))) {
player.teleport(loc1);
} else if (!(loc1 == prisoners.get(i).getLocation())) {
player.teleport(loc2);
} else if (!(loc2 == prisoners.get(i).getLocation())) {
player.teleport(loc3);
} else if (!(loc3 == prisoners.get(i).getLocation())) {
player.teleport(loc4);
} else if (!(loc4 == prisoners.get(i).getLocation())) {
player.teleport(loc5);
} else if (!(loc5 == prisoners.get(i).getLocation())) {
player.teleport(loc6);
} else if (!(loc6 == prisoners.get(i).getLocation())) {
player.teleport(loc7);
} else if (!(loc7 == prisoners.get(i).getLocation())) {
player.teleport(loc8);
} else if (!(loc8 == prisoners.get(i).getLocation())) {
player.teleport(loc9);
} else if (!(loc9 == prisoners.get(i).getLocation())) {
player.teleport(loc10);
} else if (!(loc10 == prisoners.get(i).getLocation())) {
player.teleport(loc11);
} else if (!(loc11 == prisoners.get(i).getLocation())) {
player.teleport(loc12);
} else {
player.sendMessage("Sorry, the Prisoner's team is full. Try joining the Guards, or wait until the next round.");
player.teleport(lobby);
prisoners.remove(player);
}
我想检查每个位置,通过查看囚犯队伍中的球员名单,并检查他们的位置,将球员传送到下一个可用的位置
但是,这似乎不起作用,因为我在同一个位置产卵,那么我该如何解决这个问题呢
我使用虚拟玩家来测试多个玩家,而不是支付帐户
提前谢谢
# 1 楼答案
这种情况
将始终作为
loc1
计算为true,正如您所说的是坐标,prisoners.get(i)
是Player
对象。这些条件永远不会相等,因此您的上述条件评估为所以循环的每一次迭代都会执行
player.teleport(loc1);
您需要使用
.equals
not==并确保正在比较同一类型的两个对象