diff --git a/src/main/java/com/minecolonies/core/entity/ai/minimal/EntityAISleep.java b/src/main/java/com/minecolonies/core/entity/ai/minimal/EntityAISleep.java index a1d4c0fad8c..c2d9bb88344 100755 --- a/src/main/java/com/minecolonies/core/entity/ai/minimal/EntityAISleep.java +++ b/src/main/java/com/minecolonies/core/entity/ai/minimal/EntityAISleep.java @@ -138,7 +138,7 @@ else if (homeBuilding.isInBuilding(citizen.blockPosition())) */ private boolean findBed() { - if (!citizen.getCitizenSleepHandler().isAsleep() || bedTicks < MAX_BED_TICKS) + if (!citizen.getCitizenSleepHandler().isAsleep() && bedTicks < MAX_BED_TICKS) { findBedAndTryToSleep(); return false; @@ -211,6 +211,10 @@ private void findBedAndTryToSleep() } citizen.getCitizenData().getCitizenHappinessHandler().resetModifier(SLEPTTONIGHT); } + else + { + bedTicks = 0; + } } } diff --git a/src/main/java/com/minecolonies/core/entity/ai/workers/crafting/EntityAIConcreteMixer.java b/src/main/java/com/minecolonies/core/entity/ai/workers/crafting/EntityAIConcreteMixer.java index 42f7b99c021..e5d9c8dfdcf 100644 --- a/src/main/java/com/minecolonies/core/entity/ai/workers/crafting/EntityAIConcreteMixer.java +++ b/src/main/java/com/minecolonies/core/entity/ai/workers/crafting/EntityAIConcreteMixer.java @@ -15,7 +15,6 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.ConcretePowderBlock; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.capabilities.ForgeCapabilities; import org.jetbrains.annotations.NotNull; import java.util.function.Predicate; @@ -72,7 +71,7 @@ private IAIState placePowder() final int slot = getSlotWithPowder(); if (slot == -1) { - if (InventoryUtils.hasItemInItemHandler(building.getCapability(ForgeCapabilities.ITEM_HANDLER).orElseGet(null), CONCRETE)) + if (InventoryUtils.getCountFromBuilding(building, CONCRETE) > 0) { needsCurrently = new Tuple<>(CONCRETE, STACKSIZE); return GATHERING_REQUIRED_MATERIALS; diff --git a/src/main/java/com/minecolonies/core/entity/citizen/EntityCitizen.java b/src/main/java/com/minecolonies/core/entity/citizen/EntityCitizen.java index d5c73d58186..a4e30440412 100755 --- a/src/main/java/com/minecolonies/core/entity/citizen/EntityCitizen.java +++ b/src/main/java/com/minecolonies/core/entity/citizen/EntityCitizen.java @@ -1582,7 +1582,10 @@ public void die(@NotNull final DamageSource damageSource) public void remove(final @NotNull RemovalReason reason) { super.remove(reason); - IMinecoloniesAPI.getInstance().getEventBus().post(new CitizenRemovedModEvent(citizenData, reason)); + if (reason != RemovalReason.DISCARDED && citizenData != null) + { + IMinecoloniesAPI.getInstance().getEventBus().post(new CitizenRemovedModEvent(citizenData, reason)); + } } /** diff --git a/src/main/java/com/minecolonies/core/entity/pathfinding/navigation/EntityNavigationUtils.java b/src/main/java/com/minecolonies/core/entity/pathfinding/navigation/EntityNavigationUtils.java index c4f3c5be86e..065ab74590b 100644 --- a/src/main/java/com/minecolonies/core/entity/pathfinding/navigation/EntityNavigationUtils.java +++ b/src/main/java/com/minecolonies/core/entity/pathfinding/navigation/EntityNavigationUtils.java @@ -60,8 +60,7 @@ public static boolean walkCloseToXNearY( // 1. Navigation Finished // 2. Navigation is progressing towards a previous task // 3. Navigation did not try once - boolean isOnRightTask = (nav.getPathResult() != null - && PathJobMoveCloseToXNearY.isJobFor(nav.getPathResult().getJob(), desiredPosition, nearbyPosition, distToDesired)); + boolean isOnRightTask = nav.getPathResult() != null && PathJobMoveCloseToXNearY.isJobFor(nav.getPathResult().getJob(), desiredPosition, nearbyPosition, 1); if (nav.isDone() || !isOnRightTask) { diff --git a/src/main/java/com/minecolonies/core/entity/pathfinding/pathjobs/PathJobMoveCloseToXNearY.java b/src/main/java/com/minecolonies/core/entity/pathfinding/pathjobs/PathJobMoveCloseToXNearY.java index ac43838b65b..3131e329790 100644 --- a/src/main/java/com/minecolonies/core/entity/pathfinding/pathjobs/PathJobMoveCloseToXNearY.java +++ b/src/main/java/com/minecolonies/core/entity/pathfinding/pathjobs/PathJobMoveCloseToXNearY.java @@ -115,7 +115,7 @@ public static boolean isJobFor(final AbstractPathJob job, final BlockPos desired { if (job instanceof PathJobMoveCloseToXNearY pathJob) { - return pathJob.nearbyPosition.equals(desiredPosition) && pathJob.nearbyPosition.equals(nearbyPosition) && pathJob.distToDesired == distance; + return pathJob.desiredPosition.equals(desiredPosition) && pathJob.nearbyPosition.equals(nearbyPosition) && pathJob.distToDesired == distance; } return false;