diff options
| author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-03-02 15:16:27 -0500 |
|---|---|---|
| committer | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-04-26 16:23:20 -0400 |
| commit | 4e2924407645b04c30d4a2823a1d9d0983c2c790 (patch) | |
| tree | ee6d4ba29f50d3cdd76216fee0193dad07752627 /src/main/java/de/hysky/skyblocker/mixin | |
| parent | cc00542e78fd87e0b554ab2a74d1cb193feabbb2 (diff) | |
| download | Skyblocker-4e2924407645b04c30d4a2823a1d9d0983c2c790.tar.gz Skyblocker-4e2924407645b04c30d4a2823a1d9d0983c2c790.tar.bz2 Skyblocker-4e2924407645b04c30d4a2823a1d9d0983c2c790.zip | |
24w09a
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/mixin')
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/mixin/ArmorTrimMixin.java | 34 | ||||
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/mixin/ComponentHolderMixin.java | 39 | ||||
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/mixin/DyedColorComponentMixin.java (renamed from src/main/java/de/hysky/skyblocker/mixin/DyeableItemMixin.java) | 17 | ||||
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/mixin/HandledScreenMixin.java | 2 | ||||
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/mixin/accessor/ItemStackAccessor.java | 14 |
5 files changed, 51 insertions, 55 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixin/ArmorTrimMixin.java b/src/main/java/de/hysky/skyblocker/mixin/ArmorTrimMixin.java deleted file mode 100644 index e13c41ee..00000000 --- a/src/main/java/de/hysky/skyblocker/mixin/ArmorTrimMixin.java +++ /dev/null @@ -1,34 +0,0 @@ -package de.hysky.skyblocker.mixin; - -import com.llamalad7.mixinextras.injector.ModifyReturnValue; -import com.llamalad7.mixinextras.sugar.Local; -import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.skyblock.item.CustomArmorTrims; -import de.hysky.skyblocker.utils.ItemUtils; -import de.hysky.skyblocker.utils.Utils; -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import net.minecraft.item.ItemStack; -import net.minecraft.item.trim.ArmorTrim; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -import java.util.Optional; - -@Mixin(ArmorTrim.class) -public class ArmorTrimMixin { - - @ModifyReturnValue(method = "getTrim", at = @At("RETURN")) - private static Optional<ArmorTrim> skyblocker$customArmorTrims(@SuppressWarnings("OptionalUsedAsFieldOrParameterType") Optional<ArmorTrim> original, @Local(argsOnly = true) ItemStack stack) { - if (Utils.isOnSkyblock()) { - Object2ObjectOpenHashMap<String, CustomArmorTrims.ArmorTrimId> customTrims = SkyblockerConfigManager.get().general.customArmorTrims; - String itemUuid = ItemUtils.getItemUuid(stack); - - if (customTrims.containsKey(itemUuid)) { - CustomArmorTrims.ArmorTrimId trimKey = customTrims.get(itemUuid); - return CustomArmorTrims.TRIMS_CACHE.getOrDefault(trimKey, original); - } - } - - return original; - } -} diff --git a/src/main/java/de/hysky/skyblocker/mixin/ComponentHolderMixin.java b/src/main/java/de/hysky/skyblocker/mixin/ComponentHolderMixin.java new file mode 100644 index 00000000..c8c57d6d --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/mixin/ComponentHolderMixin.java @@ -0,0 +1,39 @@ +package de.hysky.skyblocker.mixin; + +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.skyblock.item.CustomArmorTrims; +import de.hysky.skyblocker.utils.ItemUtils; +import de.hysky.skyblocker.utils.Utils; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import net.minecraft.component.ComponentHolder; +import net.minecraft.component.DataComponentType; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.item.ItemStack; +import net.minecraft.item.trim.ArmorTrim; + +@Mixin(ComponentHolder.class) +public interface ComponentHolderMixin { + + @SuppressWarnings("unchecked") + @ModifyReturnValue(method = "get", at = @At("RETURN")) + private <T> T skyblocker$customArmorTrims(T original, DataComponentType<? extends T> dataComponentType) { + if (Utils.isOnSkyblock() && ((Object) this) instanceof ItemStack stack) { + if (dataComponentType == DataComponentTypes.TRIM) { + Object2ObjectOpenHashMap<String, CustomArmorTrims.ArmorTrimId> customTrims = SkyblockerConfigManager.get().general.customArmorTrims; + String itemUuid = ItemUtils.getItemUuid(stack); + + if (customTrims.containsKey(itemUuid)) { + CustomArmorTrims.ArmorTrimId trimKey = customTrims.get(itemUuid); + return (T) CustomArmorTrims.TRIMS_CACHE.getOrDefault(trimKey, (ArmorTrim) original); + } + } + } + + return original; + } +} diff --git a/src/main/java/de/hysky/skyblocker/mixin/DyeableItemMixin.java b/src/main/java/de/hysky/skyblocker/mixin/DyedColorComponentMixin.java index b20b58b5..2682fc6d 100644 --- a/src/main/java/de/hysky/skyblocker/mixin/DyeableItemMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixin/DyedColorComponentMixin.java @@ -1,27 +1,32 @@ package de.hysky.skyblocker.mixin; import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import com.llamalad7.mixinextras.sugar.Local; + import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.skyblock.item.CustomArmorAnimatedDyes; import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.Utils; -import net.minecraft.item.DyeableItem; +import net.minecraft.component.type.DyedColorComponent; import net.minecraft.item.ItemStack; +import net.minecraft.util.math.ColorHelper; + import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(DyeableItem.class) -public interface DyeableItemMixin { +@Mixin(DyedColorComponent.class) +public record DyedColorComponentMixin() { + @ModifyReturnValue(method = "getColor", at = @At("RETURN")) - private static int skyblocker$customDyeColor(int originalColor, ItemStack stack) { + private static int skyblocker$customDyeColor(int originalColor, @Local(argsOnly = true) ItemStack stack) { if (Utils.isOnSkyblock()) { String itemUuid = ItemUtils.getItemUuid(stack); if (SkyblockerConfigManager.get().general.customAnimatedDyes.containsKey(itemUuid)) { - return CustomArmorAnimatedDyes.animateColorTransition(SkyblockerConfigManager.get().general.customAnimatedDyes.get(itemUuid)); + return ColorHelper.Argb.fullAlpha(CustomArmorAnimatedDyes.animateColorTransition(SkyblockerConfigManager.get().general.customAnimatedDyes.get(itemUuid))); } - return SkyblockerConfigManager.get().general.customDyeColors.getOrDefault(itemUuid, originalColor); + return ColorHelper.Argb.fullAlpha(SkyblockerConfigManager.get().general.customDyeColors.getOrDefault(itemUuid, originalColor)); } return originalColor; diff --git a/src/main/java/de/hysky/skyblocker/mixin/HandledScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixin/HandledScreenMixin.java index 7d2f849e..73a0bfdb 100644 --- a/src/main/java/de/hysky/skyblocker/mixin/HandledScreenMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixin/HandledScreenMixin.java @@ -205,7 +205,7 @@ public abstract class HandledScreenMixin<T extends ScreenHandler> extends Screen // Prevent selling to NPC shops ItemStack sellStack = this.handler.slots.get(49).getStack(); - if (sellStack.getName().getString().equals("Sell Item") || ItemUtils.getNbtTooltip(sellStack, text -> text.contains("buyback")) != null) { + if (sellStack.getName().getString().equals("Sell Item") || ItemUtils.getLoreLineIf(sellStack, text -> text.contains("buyback")) != null) { if (slotId != 49 && ItemProtection.isItemProtected(stack)) { ci.cancel(); return; diff --git a/src/main/java/de/hysky/skyblocker/mixin/accessor/ItemStackAccessor.java b/src/main/java/de/hysky/skyblocker/mixin/accessor/ItemStackAccessor.java deleted file mode 100644 index e3bd69aa..00000000 --- a/src/main/java/de/hysky/skyblocker/mixin/accessor/ItemStackAccessor.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.hysky.skyblocker.mixin.accessor; - -import net.minecraft.item.ItemStack; -import net.minecraft.text.Style; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(ItemStack.class) -public interface ItemStackAccessor { - @Accessor - static Style getLORE_STYLE() { - throw new UnsupportedOperationException(); - } -} |
