package io.lampnet.travelerssuitcase.mixin; import io.lampnet.travelerssuitcase.world.FantasyWorldAccess; import io.lampnet.travelerssuitcase.world.RuntimeWorld; import net.minecraft.server.level.ServerChunkCache; import net.minecraft.server.level.ServerLevel; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ServerChunkCache.class) public class ServerChunkManagerMixin { @Shadow @Final private ServerLevel level; @Inject(method = "runDistanceManagerUpdates", at = @At("HEAD"), cancellable = true) private void onRunDistanceManagerUpdates(CallbackInfoReturnable cir) { // Only apply special chunk processing logic to RuntimeWorld instances (fantasy dimensions) if (this.level instanceof RuntimeWorld) { if (!((FantasyWorldAccess) this.level).fantasy$shouldTick()) { cir.setReturnValue(false); } } // Regular worlds (overworld, nether, end) process chunks normally without interference } }