这是一个Bukkit插件,用于“我的世界”,使用他们的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);
}我想检查每个位置,并通过查看囚犯团队中的球员列表并检查他们的位置,将玩家传送到下一个可用位置。
但是,这似乎不起作用,因为我在同一个位置上产卵,那么我如何解决这个问题呢?
我使用虚拟播放器测试多个玩家,而不是支付帐户。
提前感谢!
发布于 2013-09-03 20:23:12
这个条件
!(loc1 == prisoners.get(i))将始终以loc1的形式计算为true,就像您说的是一个协调器,而prisoners.get(i)是一个Player对象。这些值永远不会相等,因此您的上述条件的计算结果为
!(false) // meaning true因此,循环的每一次迭代都将执行player.teleport(loc1);
您需要使用.equals而不是==,并确保您正在比较相同类型的两个对象。
https://stackoverflow.com/questions/18600685
复制相似问题