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; + } }