扫描玩家位置和Teleport用户[Bukkit]

时间:2014-08-12 03:39:40

标签: java minecraft bukkit

我一直在寻找,但我找不到我想要的...... 我想获得一个玩家的位置,如果它适合一个定位位置,将玩家传送到另一个位置。这就是我得到的。控制台中没有显示错误,但当玩家处于X = 300时没有任何反应。

 public void onPlayerInteract(PlayerInteractEvent e)
   {
       if(e.getPlayer().getLocation().getX()==300)
       {
           e.getPlayer().teleport(new Location(Bukkit.getServer().getWorld("world"), 310, 75, 300));
       }
   }

3 个答案:

答案 0 :(得分:2)

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

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:)

答案 1 :(得分:0)

X是一个浮点数,它永远不会完全 300.试试

if(Math.abs(e.getPlayer().getLocation().getX()-300) < 1){

答案 2 :(得分:0)

你正在检查玩家的x坐标是否恰好等于300,这可能永远不会如此。它最像是十进制数,如300.05456

您可能想要做的是检查玩家是否站在x = 300的区块上。如果是这样,那就是你应该做的事情。

if (e.getPlayer().getLocation().getBlockX() == 300) {
    // Do stuff
}