diff --git a/src/main/java/com/minecolonies/coremod/colony/Colony.java b/src/main/java/com/minecolonies/coremod/colony/Colony.java index b9acfe64c3b..b5b7a209a06 100644 --- a/src/main/java/com/minecolonies/coremod/colony/Colony.java +++ b/src/main/java/com/minecolonies/coremod/colony/Colony.java @@ -619,10 +619,16 @@ public void onWorldUnload(@NotNull final World w) */ public void onServerTick(@NotNull final TickEvent.ServerTickEvent event) { + packageManager.updateSubscribers(); + + if (packageManager.getSubscribers().isEmpty()) + { + return; + } + buildingManager.tick(event); getRequestManager().update(); - packageManager.updateSubscribers(); final List visitors = new ArrayList<>(visitingPlayers); @@ -740,15 +746,16 @@ public void onWorldTick(@NotNull final TickEvent.WorldTickEvent event) return; } - // Cleanup Buildings whose Blocks have gone AWOL - buildingManager.cleanUpBuildings(event); - // Clean up or spawn citizens. - if (!packageManager.getSubscribers().isEmpty()) + if (packageManager.getSubscribers().isEmpty()) { - citizenManager.onWorldTick(event); + return; } + // Cleanup Buildings whose Blocks have gone AWOL + buildingManager.cleanUpBuildings(event); + citizenManager.onWorldTick(event); + if (shallUpdate(world, TICKS_SECOND) && event.world.getDifficulty() != EnumDifficulty.PEACEFUL && Configurations.gameplay.doBarbariansSpawn diff --git a/src/main/java/com/minecolonies/coremod/entity/ai/citizen/builder/EntityAIStructureBuilder.java b/src/main/java/com/minecolonies/coremod/entity/ai/citizen/builder/EntityAIStructureBuilder.java index 24f3340c4e8..b235c02e85a 100644 --- a/src/main/java/com/minecolonies/coremod/entity/ai/citizen/builder/EntityAIStructureBuilder.java +++ b/src/main/java/com/minecolonies/coremod/entity/ai/citizen/builder/EntityAIStructureBuilder.java @@ -149,6 +149,11 @@ public IAIState pickUpMaterial() needsCurrently = neededItemsList.get(pickUpCount); pickUpCount++; + if (currentStructure == null) + { + return IDLE; + } + if (currentStructure.getStage() != Structure.Stage.DECORATE) { needsCurrently = needsCurrently.and(stack -> !ItemStackUtils.isDecoration(stack));