aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/mixin
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-03-02 15:16:27 -0500
committerAaron <51387595+AzureAaron@users.noreply.github.com>2024-04-26 16:23:20 -0400
commit4e2924407645b04c30d4a2823a1d9d0983c2c790 (patch)
treeee6d4ba29f50d3cdd76216fee0193dad07752627 /src/main/java/de/hysky/skyblocker/mixin
parentcc00542e78fd87e0b554ab2a74d1cb193feabbb2 (diff)
downloadSkyblocker-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.java34
-rw-r--r--src/main/java/de/hysky/skyblocker/mixin/ComponentHolderMixin.java39
-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.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/mixin/accessor/ItemStackAccessor.java14
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();
- }
-}