在Bukkit中获取玩家相对于某个方块的相对距离以及该方块的相对位置

时间:2019-06-27 19:35:59

标签: java minecraft bukkit

通过Bukkit中的指示牌获取相对于一个方块的相对方块以及玩家的相对指示

您好,我正在为Bukkit问题而苦苦挣扎。 所以基本上,我正在尝试将块放在另一个块的右边。但是我希望玩家能够从任何方向看到另一个玩家右侧的方块也位于玩家右侧。我的意思是我希望玩家看到第一个区块左侧的区块,但要从玩家而不是服务器技术位置系统中看到。

由于图像的解释不仅仅是文字,因此以下是一些图像:

只是一个普通的方块 (Image 1)

我的结果除外:玩家看到的正常方块右边的方块被排除在外 (Image 2)

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作的一种方法是:获取玩家面对的方向(使用玩家的yaw),然后使用它来获取正确的方块面孔:

Player p;
Block b;

Location l = p.getLocation();
float yaw = l.getYaw();

// Make sure yaw is in the range 0 to 360
while(yaw < 0){yaw+=360;}
yaw = yaw % 360;

// The player's yaw is their rotation in the world,
// so, we can use that to get the right face of a block!
BlockFace rightFace;

// if the player is facing SE to SW
if(yaw < 45 || yaw >= 315){
    rightFace = BlockFace.EAST;
}

// if the player is facing SW to NW
else if(yaw < 135){
    rightFace = BlockFace.SOUTH;
}

// if the player is facing NW to NE
else if(yaw < 225){
    rightFace = BlockFace.WEST;
}

// if the player is facing NE to SE
else if(yaw < 315){
    rightFace = BlockFace.NORTH;
}

现在我们知道哪个BlockFace位于块的右侧,我们可以在右侧获取该块:

Block b;
BlockFace rightFace;

Block rightBlock = b.getRelative(rightFace);

您也可以使用类似这样的代码来使方块相对于玩家位于方块的前面,后面或左侧—只需将上方的rightFace设置为

我还没有机会进行测试,但是应该可以!