forked from mirror/Folia
7bc26ecc74
Additionally, fix ActivationRange using global state to store the AABBs it checks entities against. This fixes an issue where entities would not be activated when they should be.
27 lines
1.9 KiB
Diff
27 lines
1.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Sat, 13 May 2023 17:13:40 -0700
|
|
Subject: [PATCH] Do not access POI data for lodestone compass
|
|
|
|
Instead, we can just check the loaded chunk's block position for
|
|
the lodestone block, as that is at least safe enough for the light
|
|
engine compared to the POI access. This should make it safe for
|
|
off-region access.
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/item/CompassItem.java b/src/main/java/net/minecraft/world/item/CompassItem.java
|
|
index b3c67c954acf7e518d89d6af65a55d6f22dac059..eea1066379805a4bdef9b496a92ad956d0c84ac7 100644
|
|
--- a/src/main/java/net/minecraft/world/item/CompassItem.java
|
|
+++ b/src/main/java/net/minecraft/world/item/CompassItem.java
|
|
@@ -77,7 +77,10 @@ public class CompassItem extends Item implements Vanishable {
|
|
Optional<ResourceKey<Level>> optional = getLodestoneDimension(compoundTag);
|
|
if (optional.isPresent() && optional.get() == world.dimension() && compoundTag.contains("LodestonePos")) {
|
|
BlockPos blockPos = NbtUtils.readBlockPos(compoundTag.getCompound("LodestonePos"));
|
|
- if (!world.isInWorldBounds(blockPos) || (world.hasChunkAt(blockPos) && !((ServerLevel)world).getPoiManager().existsAtPosition(PoiTypes.LODESTONE, blockPos))) { // Paper - Prevent compass from loading chunks
|
|
+ // Folia start - do not access the POI data off-region
|
|
+ net.minecraft.world.level.chunk.LevelChunk chunk = world.getChunkIfLoaded(blockPos);
|
|
+ if (!world.isInWorldBounds(blockPos) || chunk != null && chunk.getBlockState(blockPos).getBlock() != Blocks.LODESTONE) { // Paper - Prevent compass from loading chunks
|
|
+ // Folia end - do not access the POI data off-region
|
|
compoundTag.remove("LodestonePos");
|
|
}
|
|
}
|