From 74eef5953abeff378211b3d18b670c146195806d Mon Sep 17 00:00:00 2001 From: Nightenom <17338378+Nightenom@users.noreply.github.com> Date: Sun, 25 Aug 2024 19:51:35 +0200 Subject: [PATCH] Hotfix building placement (#10165) Hotfix building placement --- .../java/com/minecolonies/api/items/component/ColonyId.java | 5 +++++ .../render/worldevent/GuardTowerRallyBannerRenderer.java | 2 +- .../core/network/messages/server/DirectPlaceMessage.java | 2 +- .../core/placementhandlers/main/SurvivalHandler.java | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/minecolonies/api/items/component/ColonyId.java b/src/main/java/com/minecolonies/api/items/component/ColonyId.java index 004c20591dc..befd142d7c1 100644 --- a/src/main/java/com/minecolonies/api/items/component/ColonyId.java +++ b/src/main/java/com/minecolonies/api/items/component/ColonyId.java @@ -31,6 +31,11 @@ public record ColonyId(int id, ResourceKey<Level> dimension) ColonyId::id, ResourceKey.streamCodec(Registries.DIMENSION), ColonyId::dimension, ColonyId::new); + public boolean hasColonyId() + { + return id != EMPTY.id; + } + public void writeToItemStack(final ItemStack itemStack) { itemStack.set(ModDataComponents.COLONY_ID_COMPONENT, this); diff --git a/src/main/java/com/minecolonies/core/client/render/worldevent/GuardTowerRallyBannerRenderer.java b/src/main/java/com/minecolonies/core/client/render/worldevent/GuardTowerRallyBannerRenderer.java index e2d218aa444..f6eba2a1027 100644 --- a/src/main/java/com/minecolonies/core/client/render/worldevent/GuardTowerRallyBannerRenderer.java +++ b/src/main/java/com/minecolonies/core/client/render/worldevent/GuardTowerRallyBannerRenderer.java @@ -20,7 +20,7 @@ static void render(final WorldEventContext ctx) } final ColonyId component = ColonyId.readFromItemStack(ctx.mainHandItem); - if (component.id() == -1 || component.dimension() != ctx.clientLevel.dimension()) + if (!component.hasColonyId() || component.dimension() != ctx.clientLevel.dimension()) { return; } diff --git a/src/main/java/com/minecolonies/core/network/messages/server/DirectPlaceMessage.java b/src/main/java/com/minecolonies/core/network/messages/server/DirectPlaceMessage.java index 211296500c3..12e3c93ca03 100644 --- a/src/main/java/com/minecolonies/core/network/messages/server/DirectPlaceMessage.java +++ b/src/main/java/com/minecolonies/core/network/messages/server/DirectPlaceMessage.java @@ -102,7 +102,7 @@ protected void onExecute(final IPayloadContext ctxIn, final ServerPlayer player) if ((colony == null && state.getBlock() == ModBlocks.blockHutTownHall) || (colony != null && colony.getPermissions().hasPermission(player, Action.MANAGE_HUTS))) { final ColonyId colonyId = ColonyId.readFromItemStack(stack); - if (colony != null && colonyId != null && colony.getID() != colonyId.id()) + if (colony != null && colonyId.hasColonyId() && colony.getID() != colonyId.id()) { MessageUtils.format(WRONG_COLONY, colonyId.id()).sendTo(player); return; diff --git a/src/main/java/com/minecolonies/core/placementhandlers/main/SurvivalHandler.java b/src/main/java/com/minecolonies/core/placementhandlers/main/SurvivalHandler.java index 2bd57901f22..2b29829c9f6 100644 --- a/src/main/java/com/minecolonies/core/placementhandlers/main/SurvivalHandler.java +++ b/src/main/java/com/minecolonies/core/placementhandlers/main/SurvivalHandler.java @@ -155,7 +155,7 @@ public void handle( final ItemStack inventoryStack = slot == -1 ? stack : player.getInventory().getItem(slot); final ColonyId colonyComponent = ColonyId.readFromItemStack(stack); - if (colonyComponent != null && tempColony != null && tempColony.getID() != colonyComponent.id()) + if (colonyComponent.hasColonyId() && tempColony != null && tempColony.getID() != colonyComponent.id()) { MessageUtils.format(WRONG_COLONY, colonyComponent.id()).sendTo(player); SoundUtils.playErrorSound(player, player.blockPosition());