diff --git a/src/main/java/net/minestom/server/listener/BlockPlacementListener.java b/src/main/java/net/minestom/server/listener/BlockPlacementListener.java index b566846b5..bd51a6775 100644 --- a/src/main/java/net/minestom/server/listener/BlockPlacementListener.java +++ b/src/main/java/net/minestom/server/listener/BlockPlacementListener.java @@ -3,6 +3,7 @@ package net.minestom.server.listener; import net.minestom.server.MinecraftServer; import net.minestom.server.data.Data; import net.minestom.server.entity.Entity; +import net.minestom.server.entity.EntityType; import net.minestom.server.entity.GameMode; import net.minestom.server.entity.Player; import net.minestom.server.event.player.PlayerBlockInteractEvent; @@ -122,9 +123,11 @@ public class BlockPlacementListener { // Check if the player is trying to place a block in an entity boolean intersect = player.getBoundingBox().intersect(blockPosition); if (!intersect && block.isSolid()) { + // TODO push entities too close to the position for (Entity entity : entities) { // 'player' has already been checked - if (entity == player) + if (entity == player || + entity.getEntityType() == EntityType.ITEM) continue; intersect = entity.getBoundingBox().intersect(blockPosition); diff --git a/src/main/java/net/minestom/server/network/ConnectionManager.java b/src/main/java/net/minestom/server/network/ConnectionManager.java index 284b39106..f4272b4e2 100644 --- a/src/main/java/net/minestom/server/network/ConnectionManager.java +++ b/src/main/java/net/minestom/server/network/ConnectionManager.java @@ -302,6 +302,17 @@ public final class ConnectionManager { this.playerInitializations.add(playerInitialization); } + /** + * Removes an existing player initialization consumer. + *

+ * Removal of player initializations should be done by reference, and not cloning. + * + * @param playerInitialization the {@link Player} initialization consumer + */ + public void removePlayerInitialization(@NotNull Consumer playerInitialization) { + this.playerInitializations.remove(playerInitialization); + } + /** * Gets the kick reason when the server is shutdown using {@link MinecraftServer#stopCleanly()}. *