aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/mixin/ComponentHolderMixin.java
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/ComponentHolderMixin.java
parentcc00542e78fd87e0b554ab2a74d1cb193feabbb2 (diff)
downloadSkyblocker-4e2924407645b04c30d4a2823a1d9d0983c2c790.tar.gz
Skyblocker-4e2924407645b04c30d4a2823a1d9d0983c2c790.tar.bz2
Skyblocker-4e2924407645b04c30d4a2823a1d9d0983c2c790.zip
24w09a
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/mixin/ComponentHolderMixin.java')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixin/ComponentHolderMixin.java39
1 files changed, 39 insertions, 0 deletions
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;
+ }
+}