From bdb23971dede98a5cc350cfcb43eff56cc4fceee Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Mon, 30 Dec 2024 04:24:13 -0500 Subject: [PATCH] Cancel Component Update Animation --- .../categories/UIAndVisualsCategory.java | 8 ++++++++ .../config/configs/UIAndVisualsConfig.java | 3 +++ .../mixins/HeldItemRendererMixin.java | 20 +++++++++++++++++++ .../assets/skyblocker/lang/en_us.json | 3 +++ src/main/resources/skyblocker.mixins.json | 1 + 5 files changed, 35 insertions(+) create mode 100644 src/main/java/de/hysky/skyblocker/mixins/HeldItemRendererMixin.java diff --git a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java index 3495e1f1e9..38dff23f62 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java @@ -90,6 +90,14 @@ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig newValue -> config.uiAndVisuals.showEquipmentInInventory = newValue) .controller(ConfigUtils::createBooleanController) .build()) + .option(Option.createBuilder() + .name(Text.translatable("skyblocker.config.uiAndVisuals.cancelComponentUpdateAnimation")) + .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.cancelComponentUpdateAnimation.@Tooltip"))) + .binding(defaults.uiAndVisuals.cancelComponentUpdateAnimation, + () -> config.uiAndVisuals.cancelComponentUpdateAnimation, + newValue -> config.uiAndVisuals.cancelComponentUpdateAnimation = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) //Chest Value FIXME change dropdown to color controller .group(OptionGroup.createBuilder() diff --git a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java index deb981a180..c2f94a362e 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java @@ -35,6 +35,9 @@ public class UIAndVisualsConfig { @SerialEntry public boolean showEquipmentInInventory = true; + @SerialEntry + public boolean cancelComponentUpdateAnimation = true; + @SerialEntry public ChestValue chestValue = new ChestValue(); diff --git a/src/main/java/de/hysky/skyblocker/mixins/HeldItemRendererMixin.java b/src/main/java/de/hysky/skyblocker/mixins/HeldItemRendererMixin.java new file mode 100644 index 0000000000..8605fec29b --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/mixins/HeldItemRendererMixin.java @@ -0,0 +1,20 @@ +package de.hysky.skyblocker.mixins; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; + +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.utils.Utils; +import net.minecraft.client.render.item.HeldItemRenderer; +import net.minecraft.item.ItemStack; + +@Mixin(HeldItemRenderer.class) +public class HeldItemRendererMixin { + + @ModifyReturnValue(method = "shouldSkipHandAnimationOnSwap", at = @At("RETURN")) + private boolean skyblocker$cancelComponentUpdateAnimation(boolean original, ItemStack from, ItemStack to) { + return Utils.isOnSkyblock() && from.getItem() == to.getItem() ? original || SkyblockerConfigManager.get().uiAndVisuals.cancelComponentUpdateAnimation : original; + } +} diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 0fa2d2a5dd..7fdc06c16f 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -769,6 +769,9 @@ "skyblocker.config.uiAndVisuals.bars": "Health, Mana, Defence, Speed & XP Bars", "skyblocker.config.uiAndVisuals.bars.enableBars": "Enable Bars", + "skyblocker.config.uiAndVisuals.cancelComponentUpdateAnimation": "Cancel Component Update Animation", + "skyblocker.config.uiAndVisuals.cancelComponentUpdateAnimation.@Tooltip": "Cancels the down-and-up animation in your hand that plays when an item's components are updated.", + "skyblocker.config.uiAndVisuals.chestValue": "Chest Value", "skyblocker.config.uiAndVisuals.chestValue.color": "Chest Value Color", "skyblocker.config.uiAndVisuals.chestValue.enableChestValue": "Enable Chest Value", diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json index bf32e11acc..39b048472d 100644 --- a/src/main/resources/skyblocker.mixins.json +++ b/src/main/resources/skyblocker.mixins.json @@ -22,6 +22,7 @@ "GenericContainerScreenHandlerMixin", "HandledScreenMixin", "HandledScreenProviderMixin", + "HeldItemRendererMixin", "InGameHudMixin", "InGameOverlayRendererMixin", "InventoryScreenMixin",