From cfe75f10c006a09b5844739ffcae00ab99992412 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Fri, 11 Aug 2023 00:50:11 -0400 Subject: Custom Armour Trims --- .../xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java new file mode 100644 index 00000000..bb8dde66 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java @@ -0,0 +1,39 @@ +package me.xmrvizzy.skyblocker.mixin; + +import java.util.Optional; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import com.llamalad7.mixinextras.sugar.Local; + +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.skyblock.item.CustomArmorTrims; +import me.xmrvizzy.skyblocker.utils.Utils; +import net.minecraft.item.ItemStack; +import net.minecraft.item.trim.ArmorTrim; +import net.minecraft.nbt.NbtCompound; + +@Mixin(ArmorTrim.class) +public class ArmorTrimMixin { + + @ModifyReturnValue(method = "getTrim", at = @At("RETURN")) + private static Optional skyblocker$customArmorTrims(Optional original, @Local ItemStack stack) { + NbtCompound nbt = stack.getNbt(); + + if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes")) { + Object2ObjectOpenHashMap customTrims = SkyblockerConfig.get().general.customArmorTrims; + NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes"); + String itemUuid = extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null; + + if(customTrims.containsKey(itemUuid)) { + String trimKey = customTrims.get(itemUuid); + return CustomArmorTrims.TRIMS_CACHE.getOrDefault(trimKey, original); + } + } + + return original; + } +} -- cgit From 99b3c44e2b6632caf14e1c95d970cd499cb57993 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Mon, 14 Aug 2023 00:27:23 +0800 Subject: De-hardcode armor trim types --- .../xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java index bb8dde66..a90cf4d4 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java @@ -1,13 +1,7 @@ package me.xmrvizzy.skyblocker.mixin; -import java.util.Optional; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - import com.llamalad7.mixinextras.injector.ModifyReturnValue; import com.llamalad7.mixinextras.sugar.Local; - import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.item.CustomArmorTrims; @@ -15,25 +9,29 @@ import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.item.ItemStack; import net.minecraft.item.trim.ArmorTrim; import net.minecraft.nbt.NbtCompound; +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 skyblocker$customArmorTrims(Optional original, @Local ItemStack stack) { + private static Optional skyblocker$customArmorTrims(@SuppressWarnings("OptionalUsedAsFieldOrParameterType") Optional original, @Local ItemStack stack) { NbtCompound nbt = stack.getNbt(); if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes")) { - Object2ObjectOpenHashMap customTrims = SkyblockerConfig.get().general.customArmorTrims; + Object2ObjectOpenHashMap customTrims = SkyblockerConfig.get().general.customArmorTrims; NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes"); String itemUuid = extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null; - - if(customTrims.containsKey(itemUuid)) { - String trimKey = customTrims.get(itemUuid); + + if (customTrims.containsKey(itemUuid)) { + CustomArmorTrims.ArmorTrimId trimKey = customTrims.get(itemUuid); return CustomArmorTrims.TRIMS_CACHE.getOrDefault(trimKey, original); } } - + return original; } } -- cgit