Search code examples
javaserverminecraftminestom

Minestom (Minecraft) water bucket placing


I am creating a Minecraft server using minestom which is a server building library, it had so no code and you have to make everything yourself. So im trying to make it so players can place water but it doesnt work sometimes. If im falling and place it then it gets placed client side but not server side sometimes, when its placed server side it says "placed block" in the chat.

        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();
        });

Video - Ignore the platform disappearing, bug that I know how to fix but havent just yet but that also only happens when the water is placed server side too https://youtu.be/njH58gbXPlE


Solution

  • I believe on the look vector is the next tick’s look vector for placing water, but the server hasn’t gotten this new look vector so it uses the old one