From 53349cbd1a08076c56a1c35a39cbd77964184233 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 16 Mar 2026 22:14:35 -0400 Subject: [PATCH] Remove skip_redundant_saves --- .../ChunkHolderMixin.java | 27 -------------- .../ChunkMapAccessor.java | 12 ------- .../ChunkSerializerMixin.java | 26 -------------- .../ThreadedLevelLightEngineMixin.java | 36 ------------------- 4 files changed, 101 deletions(-) delete mode 100644 src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ChunkHolderMixin.java delete mode 100644 src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ChunkMapAccessor.java delete mode 100644 src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ChunkSerializerMixin.java delete mode 100644 src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ThreadedLevelLightEngineMixin.java diff --git a/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ChunkHolderMixin.java b/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ChunkHolderMixin.java deleted file mode 100644 index 4baa7b3d..00000000 --- a/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ChunkHolderMixin.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.embeddedt.modernfix.common.mixin.bugfix.skip_redundant_saves; - -import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; -import net.minecraft.server.level.ChunkHolder; -import net.minecraft.world.level.chunk.ChunkAccess; -import net.minecraft.world.level.chunk.LevelChunk; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; - -import javax.annotation.Nullable; - -@Mixin(ChunkHolder.class) -public abstract class ChunkHolderMixin { - @Shadow - @Nullable - public abstract LevelChunk getTickingChunk(); - - /** - * @author embeddedt - * @reason prevent chunks from being flagged for saving when light engine is loading data from disk - */ - @WrapWithCondition(method = "sectionLightChanged", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/chunk/ChunkAccess;setUnsaved(Z)V")) - private boolean onlyMarkUnsavedIfAlreadyTicking(ChunkAccess instance, boolean unsaved) { - return this.getTickingChunk() != null; - } -} diff --git a/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ChunkMapAccessor.java b/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ChunkMapAccessor.java deleted file mode 100644 index 649d1c28..00000000 --- a/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ChunkMapAccessor.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.embeddedt.modernfix.common.mixin.bugfix.skip_redundant_saves; - -import net.minecraft.server.level.ChunkMap; -import net.minecraft.world.level.ChunkPos; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(ChunkMap.class) -public interface ChunkMapAccessor { - @Invoker("releaseLightTicket") - void mfix$invokeReleaseLightTicket(ChunkPos pos); -} diff --git a/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ChunkSerializerMixin.java b/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ChunkSerializerMixin.java deleted file mode 100644 index a1574349..00000000 --- a/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ChunkSerializerMixin.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.embeddedt.modernfix.common.mixin.bugfix.skip_redundant_saves; - -import com.llamalad7.mixinextras.sugar.Local; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.ai.village.poi.PoiManager; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.chunk.ChunkAccess; -import net.minecraft.world.level.chunk.ProtoChunk; -import net.minecraft.world.level.chunk.storage.ChunkSerializer; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(ChunkSerializer.class) -public class ChunkSerializerMixin { - /** - * @author embeddedt - * @reason When reloading chunks from disk, they by definition normally don't need saving unless they've changed. - */ - @Inject(method = "read", at = @At(value = "CONSTANT", args = "stringValue=PostProcessing", ordinal = 0)) - private static void updateUnsavedFlag(ServerLevel level, PoiManager poiManager, ChunkPos pos, CompoundTag tag, CallbackInfoReturnable cir, @Local(ordinal = 0) ChunkAccess chunkaccess) { - chunkaccess.setUnsaved(tag.getBoolean("shouldSave")); - } -} diff --git a/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ThreadedLevelLightEngineMixin.java b/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ThreadedLevelLightEngineMixin.java deleted file mode 100644 index 4ffa7362..00000000 --- a/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/skip_redundant_saves/ThreadedLevelLightEngineMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.embeddedt.modernfix.common.mixin.bugfix.skip_redundant_saves; - -import net.minecraft.server.level.ChunkMap; -import net.minecraft.server.level.ThreadedLevelLightEngine; -import net.minecraft.world.level.chunk.ChunkAccess; -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; - -import java.util.concurrent.CompletableFuture; - -@Mixin(ThreadedLevelLightEngine.class) -public class ThreadedLevelLightEngineMixin { - @Shadow - @Final - private ChunkMap chunkMap; - - /** - * @author embeddedt - * @reason avoid toggling the lightCorrect flag when chunk is already lit, because it triggers saving - */ - @Inject(method = "lightChunk", at = @At("HEAD"), cancellable = true) - private void skipLightCorrectFlagChange(ChunkAccess chunk, boolean isAlreadyLit, CallbackInfoReturnable> cir) { - if (isAlreadyLit) { - ((ChunkMapAccessor)this.chunkMap).mfix$invokeReleaseLightTicket(chunk.getPos()); - // Defensively ensure the lightCorrect flag is set properly on exit from this method - if (!chunk.isLightCorrect()) { - chunk.setLightCorrect(true); - } - cir.setReturnValue(CompletableFuture.completedFuture(chunk)); - } - } -}