我一直在寻找,但我找不到我想要的...... 我想获得一个玩家的位置,如果它适合一个定位位置,将玩家传送到另一个位置。这就是我得到的。控制台中没有显示错误,但当玩家处于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));
}
}
答案 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
}