From e1e6eb4e896e5381cb073a0331544e7b99be7582 Mon Sep 17 00:00:00 2001 From: ThePixelbrain <19214217+ThePixelbrain@users.noreply.github.com> Date: Sat, 24 May 2025 11:16:53 +0200 Subject: [PATCH] Move HQM quest data saves to a different thread --- dependencies.gradle | 1 + .../bedcraftfixes/mixinplugin/Mixin.java | 3 +- .../mixinplugin/TargetedMod.java | 3 +- .../mixins/hqm/QuestingDataMixin.java | 34 +++++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 src/main/java/uk/bedcraft/bedcraftfixes/mixins/hqm/QuestingDataMixin.java diff --git a/dependencies.gradle b/dependencies.gradle index 748c095..4f50d36 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -37,4 +37,5 @@ dependencies { devOnlyNonPublishable(rfg.deobf("curse.maven:ftbutilities-237102:2291494")) devOnlyNonPublishable(rfg.deobf("curse.maven:ftblib-237167:2291433")) devOnlyNonPublishable(rfg.deobf("curse.maven:funkylocomotion-224190:2252223")) + devOnlyNonPublishable(rfg.deobf("curse.maven:HQM-77027:2270435")) } diff --git a/src/main/java/uk/bedcraft/bedcraftfixes/mixinplugin/Mixin.java b/src/main/java/uk/bedcraft/bedcraftfixes/mixinplugin/Mixin.java index 78d997a..5dd6d78 100644 --- a/src/main/java/uk/bedcraft/bedcraftfixes/mixinplugin/Mixin.java +++ b/src/main/java/uk/bedcraft/bedcraftfixes/mixinplugin/Mixin.java @@ -19,7 +19,8 @@ public enum Mixin { // Add Mixins to load here LMWorldServerMixin("ftbutilities.LMWorldServerMixin", FTB_UTILITIES), FTBUChunkEventHandlerMixin("ftbutilities.FTBUChunkEventHandlerMixin", FTB_UTILITIES), - MoveManagerMixin("funkylocomotion.MoveManagerMixin", FUNKY_LOCOMOTION); + MoveManagerMixin("funkylocomotion.MoveManagerMixin", FUNKY_LOCOMOTION), + QuestingDataMixin("hqm.QuestingDataMixin", HQM); public final String mixinClass; public final List targetedMods; diff --git a/src/main/java/uk/bedcraft/bedcraftfixes/mixinplugin/TargetedMod.java b/src/main/java/uk/bedcraft/bedcraftfixes/mixinplugin/TargetedMod.java index 65223b7..5d04fce 100644 --- a/src/main/java/uk/bedcraft/bedcraftfixes/mixinplugin/TargetedMod.java +++ b/src/main/java/uk/bedcraft/bedcraftfixes/mixinplugin/TargetedMod.java @@ -16,7 +16,8 @@ public enum TargetedMod { // Replace with your injected mods here, but always keep VANILLA: VANILLA("Minecraft", "unused", true), FTB_UTILITIES("FTBUtilities", "FTBUtilities", true), - FUNKY_LOCOMOTION("FunkyLocomotion", "FunkyLocomotion", true); + FUNKY_LOCOMOTION("FunkyLocomotion", "FunkyLocomotion", true), + HQM("HQM", "HQM", true); public final String modName; public final String jarNamePrefixLowercase; diff --git a/src/main/java/uk/bedcraft/bedcraftfixes/mixins/hqm/QuestingDataMixin.java b/src/main/java/uk/bedcraft/bedcraftfixes/mixins/hqm/QuestingDataMixin.java new file mode 100644 index 0000000..350ce23 --- /dev/null +++ b/src/main/java/uk/bedcraft/bedcraftfixes/mixins/hqm/QuestingDataMixin.java @@ -0,0 +1,34 @@ +package uk.bedcraft.bedcraftfixes.mixins.hqm; + +import java.io.File; + +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.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +import hardcorequesting.QuestingData; +import hardcorequesting.network.FileHelper; + +@Mixin(value = QuestingData.class, remap = false) +public abstract class QuestingDataMixin { + + @Final + @Shadow + private static FileHelper FILE_HELPER; + + @Inject( + method = "save", + at = @At( + value = "INVOKE", + target = "Lhardcorequesting/network/FileHelper;saveData(Ljava/io/File;)Lhardcorequesting/network/FileHelper$SaveResult;"), + cancellable = true, + locals = LocalCapture.CAPTURE_FAILSOFT) + private static void saveFromNewThread(CallbackInfo ci, File file) { + new Thread(() -> FILE_HELPER.saveData(file)).start(); + ci.cancel(); + } +}