From d10ff8a24e8743e052c338fc2a4a115161609a38 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Thu, 20 Apr 2023 19:55:41 -0400 Subject: [PATCH] Ensure cached resources are cleared when connecting to multiplayer --- .../mixin/perf/reuse_datapacks/MinecraftMixin.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/reuse_datapacks/MinecraftMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/reuse_datapacks/MinecraftMixin.java index 71c0f439..e1c5abec 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/reuse_datapacks/MinecraftMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/reuse_datapacks/MinecraftMixin.java @@ -12,8 +12,11 @@ import net.minecraft.world.level.DataPackConfig; import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.duck.reuse_datapacks.ICachingResourceClient; 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.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.Collection; import java.util.List; @@ -21,7 +24,9 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; @Mixin(Minecraft.class) -public class MinecraftMixin implements ICachingResourceClient { +public abstract class MinecraftMixin implements ICachingResourceClient { + @Shadow public abstract boolean isLocalServer(); + private ServerResources cachedResources; private List cachedDataPackConfig; @@ -67,4 +72,10 @@ public class MinecraftMixin implements ICachingResourceClient { public void setCachedDataPackConfig(Collection c) { cachedDataPackConfig = ImmutableList.copyOf(c); } + + @Inject(method = "setLevel", at = @At("HEAD")) + private void clearResourcesIfNotLocal(CallbackInfo ci) { + if(!this.isLocalServer()) + cachedResources = null; + } }