diff --git a/forge/build.gradle b/forge/build.gradle index f1bc6aa6..7f6e7507 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -44,6 +44,8 @@ dependencies { modCompileOnly("curse.maven:supermartijncore-454372:4455391") modCompileOnly("vazkii.patchouli:Patchouli:1.19.2-77") + modCompileOnly("curse.maven:blueprint-382216:3991478") + common(project(path: ":common", configuration: "namedElements")) { transitive false } shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive = false } } diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/blueprint_modif_memory_leak/ObjectModificationManagerMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/blueprint_modif_memory_leak/ObjectModificationManagerMixin.java new file mode 100644 index 00000000..1c5f1961 --- /dev/null +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/blueprint_modif_memory_leak/ObjectModificationManagerMixin.java @@ -0,0 +1,27 @@ +package org.embeddedt.modernfix.forge.mixin.bugfix.blueprint_modif_memory_leak; + +import com.google.gson.Gson; +import com.teamabnormals.blueprint.core.util.modification.ObjectModificationManager; +import com.teamabnormals.blueprint.core.util.modification.selection.SelectionSpace; +import net.minecraft.server.packs.resources.SimpleJsonResourceReloadListener; +import org.embeddedt.modernfix.annotation.RequiresMod; +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.CallbackInfo; + +@Mixin(ObjectModificationManager.class) +@RequiresMod("blueprint") +public abstract class ObjectModificationManagerMixin extends SimpleJsonResourceReloadListener { + @Shadow protected SelectionSpace selectionSpace; + + public ObjectModificationManagerMixin(Gson gson, String string) { + super(gson, string); + } + + @Inject(method = "apply(Ljava/util/Map;Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)V", at = @At("RETURN"), remap = false) + private void clearSelectionSpace(CallbackInfo ci) { + this.selectionSpace = consumer -> {}; + } +}