From 7c550a1ce485f4a253f09447cddebf0e6839e554 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Tue, 27 Aug 2024 17:48:52 -0400 Subject: [PATCH 1/3] Fix fluidlogged incompatibility --- .../common/mixin/perf/chunk_meshing/RebuildTaskMixin.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/chunk_meshing/RebuildTaskMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/chunk_meshing/RebuildTaskMixin.java index 29822d6d..be2fd6c6 100644 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/chunk_meshing/RebuildTaskMixin.java +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/chunk_meshing/RebuildTaskMixin.java @@ -5,6 +5,7 @@ import net.minecraft.client.renderer.chunk.RenderChunkRegion; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.state.BlockState; import org.embeddedt.modernfix.annotation.ClientOnlyMixin; +import org.embeddedt.modernfix.annotation.RequiresMod; import org.embeddedt.modernfix.util.blockpos.SectionBlockPosIterator; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -12,6 +13,7 @@ import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(targets = { "net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$RenderChunk$RebuildTask"}, priority = 2000) @ClientOnlyMixin +@RequiresMod("!fluidlogged") public class RebuildTaskMixin { /** * @author embeddedt From fec7eb66eac46c4a8b318d135b61c1641973aaf5 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sun, 22 Sep 2024 13:46:09 -0400 Subject: [PATCH 2/3] Avoid error from mods that replace chunk system --- .../main/java/org/embeddedt/modernfix/ModernFix.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/org/embeddedt/modernfix/ModernFix.java b/common/src/main/java/org/embeddedt/modernfix/ModernFix.java index 3d18f4ca..17e27d64 100644 --- a/common/src/main/java/org/embeddedt/modernfix/ModernFix.java +++ b/common/src/main/java/org/embeddedt/modernfix/ModernFix.java @@ -63,14 +63,19 @@ public class ModernFix { ClassInfoManager.clear(); } + @SuppressWarnings("ConstantValue") public void onServerDead(MinecraftServer server) { /* Clear as much data from the integrated server as possible, in case a mod holds on to it */ try { for(ServerLevel level : server.getAllLevels()) { ChunkMap chunkMap = level.getChunkSource().chunkMap; - chunkMap.updatingChunkMap.clear(); - chunkMap.visibleChunkMap.clear(); - chunkMap.pendingUnloads.clear(); + // Null check for mods that replace chunk system + if(chunkMap.updatingChunkMap != null) + chunkMap.updatingChunkMap.clear(); + if(chunkMap.visibleChunkMap != null) + chunkMap.visibleChunkMap.clear(); + if(chunkMap.pendingUnloads != null) + chunkMap.pendingUnloads.clear(); } } catch(RuntimeException e) { ModernFix.LOGGER.error("Couldn't clear chunk data", e); From 8e1270dcdc895ce5924f6bdcf1a8c2501c4ffc2c Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sun, 22 Sep 2024 13:47:35 -0400 Subject: [PATCH 3/3] Skip filtering blockstates if client is not in world --- .../fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java | 2 +- .../forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java index 6944449e..bcaf7df4 100644 --- a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java +++ b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java @@ -297,7 +297,7 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { } @Redirect(method = "loadModel", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/StateDefinition;getPossibleStates()Lcom/google/common/collect/ImmutableList;")) private ImmutableList loadOnlyRelevantBlockState(StateDefinition stateDefinition, ResourceLocation location) { - if(!(location instanceof ModelResourceLocation) || Minecraft.getInstance().getOverlay() != null) + if(!(location instanceof ModelResourceLocation) || Minecraft.getInstance().getOverlay() != null || Minecraft.getInstance().level == null) return stateDefinition.getPossibleStates(); return ModelBakeryHelpers.getBlockStatesForMRL(stateDefinition, (ModelResourceLocation)location); } diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java index 89533bbd..fa94cd99 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java @@ -303,7 +303,7 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { } @Redirect(method = "loadModel", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/StateDefinition;getPossibleStates()Lcom/google/common/collect/ImmutableList;")) private ImmutableList loadOnlyRelevantBlockState(StateDefinition stateDefinition, ResourceLocation location) { - if(!(location instanceof ModelResourceLocation) || Minecraft.getInstance().getOverlay() != null) + if(!(location instanceof ModelResourceLocation) || Minecraft.getInstance().getOverlay() != null || Minecraft.getInstance().level == null) return stateDefinition.getPossibleStates(); return ModelBakeryHelpers.getBlockStatesForMRL(stateDefinition, (ModelResourceLocation)location); }