From 5b40b406f70506c8144bd55a216ecee84633fc68 Mon Sep 17 00:00:00 2001 From: Raycoms Date: Sun, 11 Feb 2024 13:10:45 +0100 Subject: [PATCH] fix 9774 (#9775) Better handle removed quests Fix trapdoor handling with ladders Fix some panel/carpet movement. --- .../pathfinding/pathjobs/AbstractPathJob.java | 19 ++++++++----------- .../core/quests/QuestManager.java | 5 ++++- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/minecolonies/core/entity/pathfinding/pathjobs/AbstractPathJob.java b/src/main/java/com/minecolonies/core/entity/pathfinding/pathjobs/AbstractPathJob.java index 472e0114426..9516866000f 100644 --- a/src/main/java/com/minecolonies/core/entity/pathfinding/pathjobs/AbstractPathJob.java +++ b/src/main/java/com/minecolonies/core/entity/pathfinding/pathjobs/AbstractPathJob.java @@ -1328,13 +1328,7 @@ private int handleTargetNotPassable(@Nullable final MNode parent, @NotNull final private boolean checkHeadBlock(@Nullable final MNode parent, @NotNull final BlockPos pos) { - BlockPos localPos = pos; - final VoxelShape bb = cachedBlockLookup.getBlockState(localPos).getCollisionShape(world, localPos); - if (bb.max(Direction.Axis.Y) < 1) - { - localPos = pos.above(); - } - + final VoxelShape bb = cachedBlockLookup.getBlockState(pos).getCollisionShape(world, pos); if (!canLeaveBlock(pos.above(), parent, true)) { return true; @@ -1360,10 +1354,9 @@ private boolean checkHeadBlock(@Nullable final MNode parent, @NotNull final Bloc if (parent != null) { - final BlockState hereState = cachedBlockLookup.getBlockState(localPos.below()); - final VoxelShape bb1 = cachedBlockLookup.getBlockState(pos).getCollisionShape(world, pos); - final VoxelShape bb2 = cachedBlockLookup.getBlockState(localPos.above()).getCollisionShape(world, localPos.above()); - if ((localPos.above().getY() + getStartY(bb2, 1)) - (pos.getY() + getEndY(bb1, 0)) >= 2) + final BlockState hereState = cachedBlockLookup.getBlockState(pos.below()); + final VoxelShape bb2 = cachedBlockLookup.getBlockState(pos.above()).getCollisionShape(world, pos.above()); + if ((pos.above().getY() + getStartY(bb2, 1)) - (pos.getY() + getEndY(bb, 0)) >= 2) { return false; } @@ -1538,6 +1531,10 @@ private boolean canLeaveBlock(final BlockPos pos, final MNode parent, final bool { if (dir.getY() != 0) { + if (parentBlock.getBlock() instanceof TrapDoorBlock) + { + return true; + } return (head && parentBlock.getValue(PanelBlock.HALF) == Half.TOP && dir.getY() < 0) || (!head && parentBlock.getValue(PanelBlock.HALF) == Half.BOTTOM && dir.getY() > 0); } diff --git a/src/main/java/com/minecolonies/core/quests/QuestManager.java b/src/main/java/com/minecolonies/core/quests/QuestManager.java index 11be7737c81..7f002222762 100644 --- a/src/main/java/com/minecolonies/core/quests/QuestManager.java +++ b/src/main/java/com/minecolonies/core/quests/QuestManager.java @@ -306,7 +306,10 @@ public List getFinishedQuests() for (Map.Entry entry : finishedQuests.entrySet()) { IQuestTemplate template = GLOBAL_SERVER_QUESTS.get(entry.getKey()); - data.add(new FinishedQuest(template, entry.getValue())); + if (template != null) + { + data.add(new FinishedQuest(template, entry.getValue())); + } } finishedQuestsCache = Collections.unmodifiableList(data); }