首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扫描播放机位置和Teleport用户[Bukkit]

扫描播放机位置和Teleport用户[Bukkit]
EN

Stack Overflow用户
提问于 2014-08-12 03:39:40
回答 3查看 5K关注 0票数 3

我一直在寻找,但我找不到我想要的.我想得到一个球员的位置,如果它符合一个明确的位置,传送到另一个位置的球员。这就是我要得到的。控制台中没有显示错误,但当player在X= 300中时不会发生任何错误。

代码语言:javascript
复制
 public void onPlayerInteract(PlayerInteractEvent e)
   {
       if(e.getPlayer().getLocation().getX()==300)
       {
           e.getPlayer().teleport(new Location(Bukkit.getServer().getWorld("world"), 310, 75, 300));
       }
   }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-12 19:00:02

这里有三个错误,为了使它们正常工作,我修复了我的代码:

代码语言:javascript
复制
public void onPlayerMove(PlayerMoveEvent e)
{ // On player movement!
    if((int) e.getPlayer().getLocation().getX() == 300)
    // If you cast as int 3.9 or 3.01 it will return 3
    {
        e.getPlayer().teleport(new Location(Bukkit.getWorld("world"), 310, 75, 300));
        /* There is a bug in bukkit plugins since 1.6.4.
         * You need to get the world just by getWorld(); not
         *  getServer().getWorld();
         */
    }
}

这是在10/10 :)

票数 2
EN

Stack Overflow用户

发布于 2014-08-12 03:43:12

X是一个浮点数,它从来就不是300。试一试

代码语言:javascript
复制
if(Math.abs(e.getPlayer().getLocation().getX()-300) < 1){
票数 0
EN

Stack Overflow用户

发布于 2014-08-12 18:44:26

您正在检查玩家的x坐标是否正好等于300,这可能从来不是这样。它最像一个十进制数,类似于所以300.05456

你可能想做的是,检查球员是否站在一个街区与x = 300。如果是这样的话,这就是你应该做的。

代码语言:javascript
复制
if (e.getPlayer().getLocation().getBlockX() == 300) {
    // Do stuff
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25255774

复制
相关文章

相似问题

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