mirror of
https://github.com/PaperMC/Folia.git
synced 2024-12-02 13:43:31 +01:00
388cdacd1b
Most significant changes are to portal/teleport logic, there may be some bugs there. Not really concerned about the passenger teleport, as Folia had already added support for that. Not sure how the spark changes are going to work.
27 lines
1.8 KiB
Diff
27 lines
1.8 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/component/LodestoneTracker.java b/src/main/java/net/minecraft/world/item/component/LodestoneTracker.java
|
|
index cdd1f6939ce33e62f6609f7eb3a5dff59bf12675..5d92251dc5a53eb6b2f5ecfef1261ad6edd0e2a9 100644
|
|
--- a/src/main/java/net/minecraft/world/item/component/LodestoneTracker.java
|
|
+++ b/src/main/java/net/minecraft/world/item/component/LodestoneTracker.java
|
|
@@ -29,7 +29,10 @@ public record LodestoneTracker(Optional<GlobalPos> target, boolean tracked) {
|
|
return this;
|
|
} else {
|
|
BlockPos blockPos = this.target.get().pos();
|
|
- return world.isInWorldBounds(blockPos) && (!world.hasChunkAt(blockPos) || 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);
|
|
+ return world.isInWorldBounds(blockPos) && (chunk == null || chunk.getBlockState(blockPos).getBlock() == net.minecraft.world.level.block.Blocks.LODESTONE) // Paper - Prevent compass from loading chunks
|
|
+ // Folia end - do not access the POI data off-region
|
|
? this
|
|
: new LodestoneTracker(Optional.empty(), true);
|
|
}
|