diff --git a/common/src/main/java/net/caffeinemc/mods/lithium/common/world/chunk/ChunkStatusTracker.java b/common/src/main/java/net/caffeinemc/mods/lithium/common/world/chunk/ChunkStatusTracker.java index bded1365d..05061b33e 100644 --- a/common/src/main/java/net/caffeinemc/mods/lithium/common/world/chunk/ChunkStatusTracker.java +++ b/common/src/main/java/net/caffeinemc/mods/lithium/common/world/chunk/ChunkStatusTracker.java @@ -1,6 +1,7 @@ package net.caffeinemc.mods.lithium.common.world.chunk; import net.caffeinemc.mods.lithium.common.tracking.block.ChunkSectionChangeCallback; +import net.caffeinemc.mods.lithium.mixin.util.accessors.LevelAccessor; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.chunk.LevelChunk; @@ -45,7 +46,7 @@ public static void registerUnloadCallback(BiConsumer call } public static void onChunkAccessible(ServerLevel serverLevel, LevelChunk levelChunk) { - if (!serverLevel.getServer().isSameThread()) { + if (((LevelAccessor) serverLevel).getThread() != Thread.currentThread()) { throw new IllegalStateException("ChunkStatusTracker.onChunkAccessible called on wrong thread!"); } @@ -55,7 +56,7 @@ public static void onChunkAccessible(ServerLevel serverLevel, LevelChunk levelCh } public static void onChunkInaccessible(ServerLevel serverLevel, ChunkPos pos) { - if (!serverLevel.getServer().isSameThread()) { + if (((LevelAccessor) serverLevel).getThread() != Thread.currentThread()) { throw new IllegalStateException("ChunkStatusTracker.onChunkInaccessible called on wrong thread!"); } diff --git a/common/src/main/java/net/caffeinemc/mods/lithium/mixin/util/accessors/LevelAccessor.java b/common/src/main/java/net/caffeinemc/mods/lithium/mixin/util/accessors/LevelAccessor.java new file mode 100644 index 000000000..a4b0d59b7 --- /dev/null +++ b/common/src/main/java/net/caffeinemc/mods/lithium/mixin/util/accessors/LevelAccessor.java @@ -0,0 +1,12 @@ +package net.caffeinemc.mods.lithium.mixin.util.accessors; + +import net.minecraft.world.level.Level; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(Level.class) +public interface LevelAccessor { + + @Accessor + Thread getThread(); +} diff --git a/common/src/main/java/net/caffeinemc/mods/lithium/mixin/util/chunk_status_tracking/package-info.java b/common/src/main/java/net/caffeinemc/mods/lithium/mixin/util/chunk_status_tracking/package-info.java index 07ae1a4a0..b3811216a 100644 --- a/common/src/main/java/net/caffeinemc/mods/lithium/mixin/util/chunk_status_tracking/package-info.java +++ b/common/src/main/java/net/caffeinemc/mods/lithium/mixin/util/chunk_status_tracking/package-info.java @@ -1,6 +1,9 @@ @MixinConfigOption( - description = "Allows reacting to changes of the load status of chunks." + description = "Allows reacting to changes of the load status of chunks.", + depends = @MixinConfigDependency(dependencyPath = "mixin.util.accessors") + ) package net.caffeinemc.mods.lithium.mixin.util.chunk_status_tracking; +import net.caffeinemc.gradle.MixinConfigDependency; import net.caffeinemc.gradle.MixinConfigOption; diff --git a/common/src/main/resources/lithium.mixins.json b/common/src/main/resources/lithium.mixins.json index 6e5361b56..fc049e8ff 100644 --- a/common/src/main/resources/lithium.mixins.json +++ b/common/src/main/resources/lithium.mixins.json @@ -173,6 +173,7 @@ "util.accessors.EntitySectionAccessor", "util.accessors.ItemEntityAccessor", "util.accessors.ItemStackAccessor", + "util.accessors.LevelAccessor", "util.accessors.PersistentEntitySectionManagerAccessor", "util.accessors.ServerLevelAccessor", "util.block_entity_retrieval.LevelMixin",