diff --git a/src/main/java/com/mitchej123/hodgepodge/config/FixesConfig.java b/src/main/java/com/mitchej123/hodgepodge/config/FixesConfig.java index af835e28..474259ff 100644 --- a/src/main/java/com/mitchej123/hodgepodge/config/FixesConfig.java +++ b/src/main/java/com/mitchej123/hodgepodge/config/FixesConfig.java @@ -453,6 +453,10 @@ public class FixesConfig { @Config.DefaultBoolean(true) public static boolean fixExtraUtilitiesFilterDupe; + @Config.Comment("Fixes Ender Quarry get stuck at a mostly random location under certain conditions") + @Config.DefaultBoolean(true) + public static boolean fixExtraUtilitiesEnderQuarryFreeze; + // Galacticraft @Config.Comment("Fix time commands with GC") diff --git a/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java b/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java index dfe72b84..d9d92b79 100644 --- a/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java +++ b/src/main/java/com/mitchej123/hodgepodge/mixins/Mixins.java @@ -846,6 +846,10 @@ public enum Mixins { .addMixinClasses("extrautilities.MixinTileEntityEnderQuarry").setPhase(Phase.LATE).setSide(Side.BOTH) .setApplyIf(() -> TweaksConfig.extraUtilitiesEnderQuarryOverride > 0) .addTargetedMod(TargetedMod.EXTRA_UTILITIES)), + FIX_ENDERQUARRY_FREEZE(new Builder("Fix Ender Quarry freezes randomly") + .addMixinClasses("extrautilities.MixinTileEntityEnderQuarry_FixFreeze").setPhase(Phase.LATE) + .setSide(Side.BOTH).setApplyIf(() -> FixesConfig.fixExtraUtilitiesEnderQuarryFreeze) + .addTargetedMod(TargetedMod.EXTRA_UTILITIES)), // Gliby's Voice Chat FIX_GLIBYS_VC_THREAD_SHUTDOWN_CLIENT( diff --git a/src/main/java/com/mitchej123/hodgepodge/mixins/late/extrautilities/MixinTileEntityEnderQuarry_FixFreeze.java b/src/main/java/com/mitchej123/hodgepodge/mixins/late/extrautilities/MixinTileEntityEnderQuarry_FixFreeze.java new file mode 100644 index 00000000..43ab05c5 --- /dev/null +++ b/src/main/java/com/mitchej123/hodgepodge/mixins/late/extrautilities/MixinTileEntityEnderQuarry_FixFreeze.java @@ -0,0 +1,21 @@ +package com.mitchej123.hodgepodge.mixins.late.extrautilities; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import com.rwtema.extrautils.tileentity.enderquarry.TileEntityEnderQuarry; + +@Mixin(TileEntityEnderQuarry.class) +public class MixinTileEntityEnderQuarry_FixFreeze { + + @ModifyReturnValue(method = "harvestBlock", at = @At("RETURN"), remap = false) + private boolean hodgepodge$fixFreeze(boolean original) { + // To fix a weird issue with certain mods that let the Ender Quarry stuck at a + // mostly random location, return true also in the following (all) scenario: + // - The harvested block has no drops + // - The harvested block has unexpected drops + // - The harvested block has been harvested by another Entity + return true; + } +}