Minestom(我的世界)水桶放置
Minestom (Minecraft) water bucket placing
我正在使用 minestom 创建一个 Minecraft 服务器,这是一个服务器构建库,它没有代码,你必须自己制作所有东西。所以我试图让它让玩家可以放置水,但有时它不起作用。如果我掉落并放置它,那么有时它会被放置在客户端而不是服务器端,当它被放置在服务器端时,它会在聊天中说“放置块”。
globalEventHandler.addListener(PlayerUseItemOnBlockEvent.class, event -> {
final Player player = event.getPlayer();
if (event.getItemStack().getMaterial() != Material.WATER_BUCKET) {
return;
}
if (player.getInstance().getBlock(new Vec(event.getPosition().x(),
event.getPosition().y(),
event.getPosition().z())) == Block.IRON_BLOCK
&& event.getBlockFace().normalY() == 1) {
Point placedPos = event.getPosition();
placedPos.withX(placedPos.x() + event.getBlockFace().normalX());
placedPos.withY(placedPos.y() + event.getBlockFace().normalY());
placedPos.withZ(placedPos.z() + event.getBlockFace().normalZ());
player.getInstance().setBlock(placedPos, Block.WATER);
player.sendMessage("placed water");
}
player.getInventory().update();
});
视频 - 忽略平台消失,我知道如何修复但还没有修复的错误,但也只有在服务器端放置水时才会发生
https://youtu.be/njH58gbXPlE
我相信 look vector 是下一个 tick 放置水的 look vector,但是服务器还没有得到这个新的 look vector 所以它使用旧的
我正在使用 minestom 创建一个 Minecraft 服务器,这是一个服务器构建库,它没有代码,你必须自己制作所有东西。所以我试图让它让玩家可以放置水,但有时它不起作用。如果我掉落并放置它,那么有时它会被放置在客户端而不是服务器端,当它被放置在服务器端时,它会在聊天中说“放置块”。
globalEventHandler.addListener(PlayerUseItemOnBlockEvent.class, event -> {
final Player player = event.getPlayer();
if (event.getItemStack().getMaterial() != Material.WATER_BUCKET) {
return;
}
if (player.getInstance().getBlock(new Vec(event.getPosition().x(),
event.getPosition().y(),
event.getPosition().z())) == Block.IRON_BLOCK
&& event.getBlockFace().normalY() == 1) {
Point placedPos = event.getPosition();
placedPos.withX(placedPos.x() + event.getBlockFace().normalX());
placedPos.withY(placedPos.y() + event.getBlockFace().normalY());
placedPos.withZ(placedPos.z() + event.getBlockFace().normalZ());
player.getInstance().setBlock(placedPos, Block.WATER);
player.sendMessage("placed water");
}
player.getInventory().update();
});
视频 - 忽略平台消失,我知道如何修复但还没有修复的错误,但也只有在服务器端放置水时才会发生 https://youtu.be/njH58gbXPlE
我相信 look vector 是下一个 tick 放置水的 look vector,但是服务器还没有得到这个新的 look vector 所以它使用旧的