首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于循环检查播放机位置

用于循环检查播放机位置
EN

Stack Overflow用户
提问于 2013-09-03 20:12:27
回答 1查看 212关注 0票数 0

这是一个Bukkit插件,用于“我的世界”,使用他们的API。

我试着检查一个玩家是否在一个指定的位置,如果他们在,那就不要在那里传送一个玩家。相反,检查另一个位置,如果它是空的,就在那里产卵。

下面的守则可以更好地解释这一点:

代码语言:javascript
复制
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);
    }

我想检查每个位置,并通过查看囚犯团队中的球员列表并检查他们的位置,将玩家传送到下一个可用位置。

但是,这似乎不起作用,因为我在同一个位置上产卵,那么我如何解决这个问题呢?

我使用虚拟播放器测试多个玩家,而不是支付帐户。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-03 20:23:12

这个条件

代码语言:javascript
复制
!(loc1 == prisoners.get(i))

将始终以loc1的形式计算为true,就像您说的是一个协调器,而prisoners.get(i)是一个Player对象。这些值永远不会相等,因此您的上述条件的计算结果为

代码语言:javascript
复制
!(false)  // meaning true

因此,循环的每一次迭代都将执行player.teleport(loc1);

您需要使用.equals而不是==,并确保您正在比较相同类型的两个对象。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18600685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档