From 79ba1ed6fc133bacf64ee8e3a5d1454d1eadde2f Mon Sep 17 00:00:00 2001
From: Aaron <51387595+AzureAaron@users.noreply.github.com>
Date: Tue, 8 Aug 2023 20:28:24 -0400
Subject: Add Item Renaming

---
 .../java/me/xmrvizzy/skyblocker/SkyblockerMod.java |  2 +
 .../skyblocker/config/SkyblockerConfig.java        | 25 +++++++-
 .../xmrvizzy/skyblocker/mixin/ItemStackMixin.java  | 36 ++++++++++++
 .../skyblocker/skyblock/item/ItemRenaming.java     | 66 ++++++++++++++++++++++
 4 files changed, 127 insertions(+), 2 deletions(-)
 create mode 100644 src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java
 create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/item/ItemRenaming.java

(limited to 'src/main/java/me/xmrvizzy/skyblocker')

diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index 1fd42f37..63b4adbf 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -11,6 +11,7 @@ import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze;
 import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonMap;
 import me.xmrvizzy.skyblocker.skyblock.dungeon.LividColor;
 import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud;
+import me.xmrvizzy.skyblocker.skyblock.item.ItemRenaming;
 import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip;
 import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup;
 import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry;
@@ -88,6 +89,7 @@ public class SkyblockerMod implements ClientModInitializer {
         TitleContainer.init();
         OcclusionCulling.init();
         TeleportOverlay.init();
+        ItemRenaming.init();
         containerSolverManager.init();
         scheduler.scheduleCyclic(Utils::update, 20);
         scheduler.scheduleCyclic(DiscordRPCManager::updateDataAndPresence, 100);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 8d633563..fac8055d 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -1,10 +1,15 @@
 package me.xmrvizzy.skyblocker.config;
 
+import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
 import com.mojang.brigadier.builder.LiteralArgumentBuilder;
 import me.shedaniel.autoconfig.AutoConfig;
 import me.shedaniel.autoconfig.ConfigData;
 import me.shedaniel.autoconfig.annotation.Config;
 import me.shedaniel.autoconfig.annotation.ConfigEntry;
+import me.shedaniel.autoconfig.serializer.ConfigSerializer;
 import me.shedaniel.autoconfig.serializer.GsonConfigSerializer;
 import me.xmrvizzy.skyblocker.SkyblockerMod;
 import me.xmrvizzy.skyblocker.chat.ChatFilterResult;
@@ -12,9 +17,11 @@ import me.xmrvizzy.skyblocker.utils.Scheduler;
 import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
 import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
 import net.minecraft.client.resource.language.I18n;
+import net.minecraft.text.Text;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal;
 
@@ -188,6 +195,8 @@ public class SkyblockerConfig implements ConfigData {
 
         @ConfigEntry.Gui.Excluded
         public List<Integer> lockedSlots = new ArrayList<>();
+        
+        public Map<String, Text> customItemNames = new Object2ObjectLinkedOpenHashMap<>();
     }
 
     public static class TabHudConf {
@@ -530,10 +539,18 @@ public class SkyblockerConfig implements ConfigData {
     }
 
     /**
-     * Registers the config to AutoConfig and register commands to open the config screen.
+     * Registers the config to AutoConfig and registers commands to open the config screen.
      */
     public static void init() {
-        AutoConfig.register(SkyblockerConfig.class, GsonConfigSerializer::new);
+        Gson gson = new GsonBuilder()
+                .setPrettyPrinting()
+                .registerTypeHierarchyAdapter(Text.class, new Text.Serializer())
+                .registerTypeHierarchyAdapter(net.minecraft.text.Style.class, new net.minecraft.text.Style.Serializer())
+                .create();
+        
+        ConfigSerializer.Factory<SkyblockerConfig> serializer = (cfg, cfgClass) -> new GsonConfigSerializer<SkyblockerConfig>(cfg, cfgClass, gson);
+        
+        AutoConfig.register(SkyblockerConfig.class, serializer);
         ClientCommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess) -> dispatcher.register(literal(SkyblockerMod.NAMESPACE).then(optionsLiteral("config")).then(optionsLiteral("options")))));
     }
 
@@ -551,4 +568,8 @@ public class SkyblockerConfig implements ConfigData {
     public static SkyblockerConfig get() {
         return AutoConfig.getConfigHolder(SkyblockerConfig.class).getConfig();
     }
+    
+    public static void save() {
+        AutoConfig.getConfigHolder(SkyblockerConfig.class).save();
+    }
 }
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java
new file mode 100644
index 00000000..08e7b5ea
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java
@@ -0,0 +1,36 @@
+package me.xmrvizzy.skyblocker.mixin;
+
+import java.util.Map;
+
+import org.jetbrains.annotations.Nullable;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+import org.spongepowered.asm.mixin.injection.At;
+
+import com.llamalad7.mixinextras.injector.ModifyReturnValue;
+
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NbtCompound;
+import net.minecraft.text.Text;
+
+@Mixin(ItemStack.class)
+public class ItemStackMixin {
+	@Shadow
+	@Nullable
+	private NbtCompound nbt;
+
+	@ModifyReturnValue(method = "getName", at = @At("RETURN"))
+	public Text skyblocker$customItemNames(Text original) {
+		if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes"))  {
+			Map<String, Text> customItemNames = SkyblockerConfig.get().general.customItemNames;
+			NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes");
+			String itemUuid =  extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
+			
+			if (itemUuid != null && customItemNames.containsKey(itemUuid)) return customItemNames.get(itemUuid);
+		}
+		
+		return original;
+	}
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/ItemRenaming.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/ItemRenaming.java
new file mode 100644
index 00000000..db672803
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/ItemRenaming.java
@@ -0,0 +1,66 @@
+package me.xmrvizzy.skyblocker.skyblock.item;
+
+import java.util.Map;
+
+import com.mojang.brigadier.Command;
+import com.mojang.brigadier.CommandDispatcher;
+
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
+import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.command.CommandRegistryAccess;
+import net.minecraft.command.argument.TextArgumentType;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NbtCompound;
+import net.minecraft.text.Text;
+
+public class ItemRenaming {
+
+	public static void init() {
+		ClientCommandRegistrationCallback.EVENT.register(ItemRenaming::registerCommands);
+	}
+	
+	private static void registerCommands(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess registryAccess) {
+		dispatcher.register(ClientCommandManager.literal("skyblocker")
+				.then(ClientCommandManager.literal("renameItem")
+						.executes(context -> renameItem(context.getSource(), null))
+						.then(ClientCommandManager.argument("textComponent", TextArgumentType.text())
+								.executes(context -> renameItem(context.getSource(), context.getArgument("textComponent", Text.class))))));
+	}
+	
+	private static int renameItem(FabricClientCommandSource source, Text text) {
+		MinecraftClient client = source.getClient();
+		ItemStack heldItem = client.player.getMainHandStack();
+		NbtCompound nbt = (heldItem != null) ? heldItem.getNbt() : null;
+		
+		if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes")) {
+			NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes");
+			String itemUuid =  extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
+			
+			if (itemUuid != null) {
+				Map<String, Text> customItemNames = SkyblockerConfig.get().general.customItemNames;
+				
+				if (text == null) {
+					//Remove custom item name when the text argument isn't passed
+					customItemNames.remove(itemUuid);
+					SkyblockerConfig.save();
+					source.sendFeedback(Text.translatable("skyblocker.customItemNames.removed"));
+				} else {
+					//If the text is provided then set the item's custom name to it
+					customItemNames.put(itemUuid, text);
+					SkyblockerConfig.save();
+					source.sendFeedback(Text.translatable("skyblocker.customItemNames.added"));
+				}
+			} else {
+				source.sendError(Text.translatable("skyblocker.customItemNames.noItemUuid"));
+			}
+		} else {
+			source.sendError(Text.translatable("skyblocker.customItemNames.unableToSetName"));
+		}
+		
+		return Command.SINGLE_SUCCESS;
+	}
+}
-- 
cgit 


From a629801cc3ffa5913bc07af173e8a01673a70681 Mon Sep 17 00:00:00 2001
From: Aaron <51387595+AzureAaron@users.noreply.github.com>
Date: Wed, 9 Aug 2023 20:01:18 -0400
Subject: Custom Armour Dye Colours

---
 .../java/me/xmrvizzy/skyblocker/SkyblockerMod.java |  6 +-
 .../skyblocker/config/SkyblockerConfig.java        | 15 ++--
 .../skyblocker/mixin/DyeableItemMixin.java         | 31 ++++++++
 .../xmrvizzy/skyblocker/mixin/ItemStackMixin.java  |  5 +-
 .../skyblock/item/CustomArmorDyeColors.java        | 87 ++++++++++++++++++++++
 .../skyblocker/skyblock/item/CustomItemNames.java  | 69 +++++++++++++++++
 .../skyblocker/skyblock/item/ItemRenaming.java     | 66 ----------------
 .../resources/assets/skyblocker/lang/en_us.json    | 13 +++-
 src/main/resources/skyblocker.mixins.json          |  1 +
 9 files changed, 213 insertions(+), 80 deletions(-)
 create mode 100644 src/main/java/me/xmrvizzy/skyblocker/mixin/DyeableItemMixin.java
 create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorDyeColors.java
 create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomItemNames.java
 delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/item/ItemRenaming.java

(limited to 'src/main/java/me/xmrvizzy/skyblocker')

diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index 63b4adbf..ada86624 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -11,7 +11,8 @@ import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze;
 import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonMap;
 import me.xmrvizzy.skyblocker.skyblock.dungeon.LividColor;
 import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud;
-import me.xmrvizzy.skyblocker.skyblock.item.ItemRenaming;
+import me.xmrvizzy.skyblocker.skyblock.item.CustomArmorDyeColors;
+import me.xmrvizzy.skyblocker.skyblock.item.CustomItemNames;
 import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip;
 import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup;
 import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry;
@@ -89,7 +90,8 @@ public class SkyblockerMod implements ClientModInitializer {
         TitleContainer.init();
         OcclusionCulling.init();
         TeleportOverlay.init();
-        ItemRenaming.init();
+        CustomItemNames.init();
+        CustomArmorDyeColors.init();
         containerSolverManager.init();
         scheduler.scheduleCyclic(Utils::update, 20);
         scheduler.scheduleCyclic(DiscordRPCManager::updateDataAndPresence, 100);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index fac8055d..7d44fecb 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -1,6 +1,7 @@
 package me.xmrvizzy.skyblocker.config;
 
-import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
+import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
+import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
@@ -17,11 +18,11 @@ import me.xmrvizzy.skyblocker.utils.Scheduler;
 import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
 import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
 import net.minecraft.client.resource.language.I18n;
+import net.minecraft.text.Style;
 import net.minecraft.text.Text;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal;
 
@@ -196,7 +197,9 @@ public class SkyblockerConfig implements ConfigData {
         @ConfigEntry.Gui.Excluded
         public List<Integer> lockedSlots = new ArrayList<>();
         
-        public Map<String, Text> customItemNames = new Object2ObjectLinkedOpenHashMap<>();
+        public Object2ObjectOpenHashMap<String, Text> customItemNames = new Object2ObjectOpenHashMap<>();
+        
+        public Object2IntOpenHashMap<String> customDyeColors = new Object2IntOpenHashMap<>();
     }
 
     public static class TabHudConf {
@@ -439,13 +442,13 @@ public class SkyblockerConfig implements ConfigData {
         public boolean enabled = true;
         @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
         @ConfigEntry.Gui.Tooltip(count = 3)
-        public Style style = Style.SIMPLE;
+        public DwarvenHudStyle style = DwarvenHudStyle.SIMPLE;
         public boolean enableBackground = true;
         public int x = 10;
         public int y = 10;
     }
 
-    public enum Style {
+    public enum DwarvenHudStyle {
         SIMPLE,
         FANCY,
         CLASSIC;
@@ -545,7 +548,7 @@ public class SkyblockerConfig implements ConfigData {
         Gson gson = new GsonBuilder()
                 .setPrettyPrinting()
                 .registerTypeHierarchyAdapter(Text.class, new Text.Serializer())
-                .registerTypeHierarchyAdapter(net.minecraft.text.Style.class, new net.minecraft.text.Style.Serializer())
+                .registerTypeHierarchyAdapter(Style.class, new Style.Serializer())
                 .create();
         
         ConfigSerializer.Factory<SkyblockerConfig> serializer = (cfg, cfgClass) -> new GsonConfigSerializer<SkyblockerConfig>(cfg, cfgClass, gson);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/DyeableItemMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/DyeableItemMixin.java
new file mode 100644
index 00000000..4d0b6bae
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/DyeableItemMixin.java
@@ -0,0 +1,31 @@
+package me.xmrvizzy.skyblocker.mixin;
+
+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 me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import net.minecraft.item.DyeableItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NbtCompound;
+
+@Mixin(DyeableItem.class)
+public interface DyeableItemMixin {
+
+	@ModifyReturnValue(method = "getColor", at = @At("RETURN"))
+	default public int skyblocker$customDyeColor(int originalColor, @Local ItemStack stack) {
+		NbtCompound nbt = stack.getNbt();
+		
+		if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes")) {
+			NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes");
+			String itemUuid =  extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
+			
+			return SkyblockerConfig.get().general.customDyeColors.getOrDefault(itemUuid, originalColor);
+		}
+		
+		return originalColor;
+	}
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java
index 08e7b5ea..640bce9b 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java
@@ -1,7 +1,5 @@
 package me.xmrvizzy.skyblocker.mixin;
 
-import java.util.Map;
-
 import org.jetbrains.annotations.Nullable;
 import org.spongepowered.asm.mixin.Mixin;
 import org.spongepowered.asm.mixin.Shadow;
@@ -24,11 +22,10 @@ public class ItemStackMixin {
 	@ModifyReturnValue(method = "getName", at = @At("RETURN"))
 	public Text skyblocker$customItemNames(Text original) {
 		if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes"))  {
-			Map<String, Text> customItemNames = SkyblockerConfig.get().general.customItemNames;
 			NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes");
 			String itemUuid =  extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
 			
-			if (itemUuid != null && customItemNames.containsKey(itemUuid)) return customItemNames.get(itemUuid);
+			return SkyblockerConfig.get().general.customItemNames.getOrDefault(itemUuid, original);
 		}
 		
 		return original;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorDyeColors.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorDyeColors.java
new file mode 100644
index 00000000..dd5614d1
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorDyeColors.java
@@ -0,0 +1,87 @@
+package me.xmrvizzy.skyblocker.skyblock.item;
+
+import com.mojang.brigadier.Command;
+import com.mojang.brigadier.CommandDispatcher;
+import com.mojang.brigadier.arguments.StringArgumentType;
+
+import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
+import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.command.CommandRegistryAccess;
+import net.minecraft.item.DyeableArmorItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NbtCompound;
+import net.minecraft.text.Text;
+
+public class CustomArmorDyeColors {
+
+	public static void init() {
+		ClientCommandRegistrationCallback.EVENT.register(CustomArmorDyeColors::registerCommands);
+	}
+	
+	private static void registerCommands(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess registryAccess) {
+		dispatcher.register(ClientCommandManager.literal("skyblocker")
+				.then(ClientCommandManager.literal("dyeColor")
+						.executes(context -> customizeDyeColor(context.getSource(), null))
+						.then(ClientCommandManager.argument("hexCode", StringArgumentType.string())
+								.executes(context -> customizeDyeColor(context.getSource(), StringArgumentType.getString(context, "hexCode"))))));
+	}
+	
+	private static int customizeDyeColor(FabricClientCommandSource source, String hex) {
+		MinecraftClient client = source.getClient();
+		ItemStack heldItem = client.player.getMainHandStack();
+		NbtCompound nbt = (heldItem != null) ? heldItem.getNbt() : null;
+		
+		if (hex != null && !isHexadecimalColor(hex)) {
+			source.sendError(Text.translatable("skyblocker.customDyeColors.invalidHex"));
+			return Command.SINGLE_SUCCESS;
+		}
+		
+		if (Utils.isOnSkyblock() && heldItem != null && heldItem.getItem() instanceof DyeableArmorItem) {
+			if (nbt != null && nbt.contains("ExtraAttributes")) {
+				NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes");
+				String itemUuid =  extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
+				
+				if (itemUuid != null) {
+					Object2IntOpenHashMap<String> customDyeColors = SkyblockerConfig.get().general.customDyeColors;
+					
+					if (hex == null) {
+						if (customDyeColors.containsKey(itemUuid)) {
+							customDyeColors.removeInt(itemUuid);
+							SkyblockerConfig.save();
+							source.sendFeedback(Text.translatable("skyblocker.customDyeColors.removed"));
+						} else {
+							source.sendFeedback(Text.translatable("skyblocker.customDyeColors.neverHad"));
+						}
+					} else {
+						customDyeColors.put(itemUuid, Integer.decode("0x" + hex.replace("#", "")).intValue());
+						SkyblockerConfig.save();
+						source.sendFeedback(Text.translatable("skyblocker.customDyeColors.added"));
+					}
+				} else {
+					source.sendError(Text.translatable("skyblocker.customDyeColors.noItemUuid"));
+				}
+			}
+		} else {
+			if (!(heldItem.getItem() instanceof DyeableArmorItem)) {
+				source.sendError(Text.translatable("skyblocker.customDyeColors.notDyeable"));
+				return Command.SINGLE_SUCCESS;
+			} else {
+				source.sendError(Text.translatable("skyblocker.customDyeColors.unableToSetColor"));
+			}
+		}
+		
+		return Command.SINGLE_SUCCESS;
+	}
+	
+	private static boolean isHexadecimalColor(String s) {
+		s = s.replace("#", "");
+		
+		return s.chars()
+				.allMatch(c -> "0123456789ABCDEFabcdef".indexOf(c) >= 0) && s.length() == 6;
+	}
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomItemNames.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomItemNames.java
new file mode 100644
index 00000000..4ecff508
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomItemNames.java
@@ -0,0 +1,69 @@
+package me.xmrvizzy.skyblocker.skyblock.item;
+
+import com.mojang.brigadier.Command;
+import com.mojang.brigadier.CommandDispatcher;
+
+import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
+import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.command.CommandRegistryAccess;
+import net.minecraft.command.argument.TextArgumentType;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NbtCompound;
+import net.minecraft.text.Text;
+
+public class CustomItemNames {
+
+	public static void init() {
+		ClientCommandRegistrationCallback.EVENT.register(CustomItemNames::registerCommands);
+	}
+	
+	private static void registerCommands(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess registryAccess) {
+		dispatcher.register(ClientCommandManager.literal("skyblocker")
+				.then(ClientCommandManager.literal("renameItem")
+						.executes(context -> renameItem(context.getSource(), null))
+						.then(ClientCommandManager.argument("textComponent", TextArgumentType.text())
+								.executes(context -> renameItem(context.getSource(), context.getArgument("textComponent", Text.class))))));
+	}
+	
+	private static int renameItem(FabricClientCommandSource source, Text text) {
+		MinecraftClient client = source.getClient();
+		ItemStack heldItem = client.player.getMainHandStack();
+		NbtCompound nbt = (heldItem != null) ? heldItem.getNbt() : null;
+		
+		if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes")) {
+			NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes");
+			String itemUuid =  extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
+			
+			if (itemUuid != null) {
+				Object2ObjectOpenHashMap<String, Text> customItemNames = SkyblockerConfig.get().general.customItemNames;
+				
+				if (text == null) {
+					if (customItemNames.containsKey(itemUuid)) {
+						//Remove custom item name when the text argument isn't passed
+						customItemNames.remove(itemUuid);
+						SkyblockerConfig.save();
+						source.sendFeedback(Text.translatable("skyblocker.customItemNames.removed"));
+					} else {
+						source.sendFeedback(Text.translatable("skyblocker.customItemNames.neverHad"));
+					}
+				} else {
+					//If the text is provided then set the item's custom name to it
+					customItemNames.put(itemUuid, text);
+					SkyblockerConfig.save();
+					source.sendFeedback(Text.translatable("skyblocker.customItemNames.added"));
+				}
+			} else {
+				source.sendError(Text.translatable("skyblocker.customItemNames.noItemUuid"));
+			}
+		} else {
+			source.sendError(Text.translatable("skyblocker.customItemNames.unableToSetName"));
+		}
+		
+		return Command.SINGLE_SUCCESS;
+	}
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/ItemRenaming.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/ItemRenaming.java
deleted file mode 100644
index db672803..00000000
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/ItemRenaming.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package me.xmrvizzy.skyblocker.skyblock.item;
-
-import java.util.Map;
-
-import com.mojang.brigadier.Command;
-import com.mojang.brigadier.CommandDispatcher;
-
-import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
-import me.xmrvizzy.skyblocker.utils.Utils;
-import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
-import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
-import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.command.CommandRegistryAccess;
-import net.minecraft.command.argument.TextArgumentType;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NbtCompound;
-import net.minecraft.text.Text;
-
-public class ItemRenaming {
-
-	public static void init() {
-		ClientCommandRegistrationCallback.EVENT.register(ItemRenaming::registerCommands);
-	}
-	
-	private static void registerCommands(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess registryAccess) {
-		dispatcher.register(ClientCommandManager.literal("skyblocker")
-				.then(ClientCommandManager.literal("renameItem")
-						.executes(context -> renameItem(context.getSource(), null))
-						.then(ClientCommandManager.argument("textComponent", TextArgumentType.text())
-								.executes(context -> renameItem(context.getSource(), context.getArgument("textComponent", Text.class))))));
-	}
-	
-	private static int renameItem(FabricClientCommandSource source, Text text) {
-		MinecraftClient client = source.getClient();
-		ItemStack heldItem = client.player.getMainHandStack();
-		NbtCompound nbt = (heldItem != null) ? heldItem.getNbt() : null;
-		
-		if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes")) {
-			NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes");
-			String itemUuid =  extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
-			
-			if (itemUuid != null) {
-				Map<String, Text> customItemNames = SkyblockerConfig.get().general.customItemNames;
-				
-				if (text == null) {
-					//Remove custom item name when the text argument isn't passed
-					customItemNames.remove(itemUuid);
-					SkyblockerConfig.save();
-					source.sendFeedback(Text.translatable("skyblocker.customItemNames.removed"));
-				} else {
-					//If the text is provided then set the item's custom name to it
-					customItemNames.put(itemUuid, text);
-					SkyblockerConfig.save();
-					source.sendFeedback(Text.translatable("skyblocker.customItemNames.added"));
-				}
-			} else {
-				source.sendError(Text.translatable("skyblocker.customItemNames.noItemUuid"));
-			}
-		} else {
-			source.sendError(Text.translatable("skyblocker.customItemNames.unableToSetName"));
-		}
-		
-		return Command.SINGLE_SUCCESS;
-	}
-}
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index 4c3ed043..e7f68753 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -295,7 +295,16 @@
   "skyblocker.shortcuts.commandSuggestionTooltip": "Due to limitations of Minecraft, command suggestions will only work after a restart of the game.",
   
   "skyblocker.customItemNames.removed": "§b[§6Skyblocker§b] §fRemoved this item's custom name.",
-  "skyblocker.customItemNames.added": "§b[§6Skyblocker§b] §fAdded a custom name for your currently held item!",
+  "skyblocker.customItemNames.neverHad": "§b[§6Skyblocker§b] §fThis item doesn't have a custom name set, but why not add one? ;)",
+  "skyblocker.customItemNames.added": "§b[§6Skyblocker§b] §fSet a custom name for your currently held item!",
   "skyblocker.customItemNames.noItemUuid": "§b[§6Skyblocker§b] §cYou must be holding an item that has a uuid in order to set a custom name!",
-  "skyblocker.customItemNames.unableToSetName": "§b[§6Skyblocker§b] §cUnable to set custom item name :( (Are you in skyblock?, are you holding an item?)"
+  "skyblocker.customItemNames.unableToSetName": "§b[§6Skyblocker§b] §cUnable to set a custom item name :( (Are you in skyblock?, are you holding an item?)",
+  
+  "skyblocker.customDyeColors.invalidHex": "§b[§6Skyblocker§b] §cInvalid HEX color code!",
+  "skyblocker.customDyeColors.notDyeable": "§b[§6Skyblocker§b] §cThis item isn't a dyeable armor piece!",
+  "skyblocker.customDyeColors.removed": "§b[§6Skyblocker§b] §fRemoved this item's custom dye color.",
+  "skyblocker.customDyeColors.neverHad": "§b[§6Skyblocker§b] §fThis item doesn't have a custom dye color set, but why not add one? ;)",
+  "skyblocker.customDyeColors.added": "§b[§6Skyblocker§b] §fSet a custom dye color for your currently held item!",
+  "skyblocker.customDyeColors.noItemUuid": "§b[§6Skyblocker§b] §cYou must be holding an item that has a uuid in order to set a custom dye color!",
+  "skyblocker.customDyeColors.unableToSetColor": "§b[§6Skyblocker§b] §cUnable to set a custom dye color :( (Are you in skyblock?)"
 }
diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json
index 19ad03bf..522c3af0 100644
--- a/src/main/resources/skyblocker.mixins.json
+++ b/src/main/resources/skyblocker.mixins.json
@@ -6,6 +6,7 @@
     "ClientPlayerEntityMixin",
     "ClientPlayNetworkHandlerMixin",
     "DrawContextMixin",
+    "DyeableItemMixin",
     "FarmlandBlockMixin",
     "GenericContainerScreenHandlerMixin",
     "HandledScreenMixin",
-- 
cgit 


From 16c6debb1cc90be5815cd188264b16ddf8b76f16 Mon Sep 17 00:00:00 2001
From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>
Date: Thu, 10 Aug 2023 10:55:45 +0800
Subject: Refactor CustomArmorDyeColors and CustomItemNames

---
 .../skyblocker/config/SkyblockerConfig.java        |  2 +-
 .../skyblocker/mixin/DyeableItemMixin.java         | 18 +++---
 .../xmrvizzy/skyblocker/mixin/ItemStackMixin.java  | 10 +--
 .../skyblock/item/CustomArmorDyeColors.java        | 72 ++++++++++------------
 .../skyblocker/skyblock/item/CustomItemNames.java  | 21 +++----
 5 files changed, 55 insertions(+), 68 deletions(-)

(limited to 'src/main/java/me/xmrvizzy/skyblocker')

diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 7d44fecb..75e6fdc5 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -551,7 +551,7 @@ public class SkyblockerConfig implements ConfigData {
                 .registerTypeHierarchyAdapter(Style.class, new Style.Serializer())
                 .create();
         
-        ConfigSerializer.Factory<SkyblockerConfig> serializer = (cfg, cfgClass) -> new GsonConfigSerializer<SkyblockerConfig>(cfg, cfgClass, gson);
+        ConfigSerializer.Factory<SkyblockerConfig> serializer = (cfg, cfgClass) -> new GsonConfigSerializer<>(cfg, cfgClass, gson);
         
         AutoConfig.register(SkyblockerConfig.class, serializer);
         ClientCommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess) -> dispatcher.register(literal(SkyblockerMod.NAMESPACE).then(optionsLiteral("config")).then(optionsLiteral("options")))));
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/DyeableItemMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/DyeableItemMixin.java
index 4d0b6bae..f04c4cdd 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/DyeableItemMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/DyeableItemMixin.java
@@ -1,31 +1,27 @@
 package me.xmrvizzy.skyblocker.mixin;
 
-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 me.xmrvizzy.skyblocker.config.SkyblockerConfig;
 import me.xmrvizzy.skyblocker.utils.Utils;
 import net.minecraft.item.DyeableItem;
 import net.minecraft.item.ItemStack;
 import net.minecraft.nbt.NbtCompound;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
 
 @Mixin(DyeableItem.class)
 public interface DyeableItemMixin {
-
 	@ModifyReturnValue(method = "getColor", at = @At("RETURN"))
-	default public int skyblocker$customDyeColor(int originalColor, @Local ItemStack stack) {
+	private int skyblocker$customDyeColor(int originalColor, ItemStack stack) {
 		NbtCompound nbt = stack.getNbt();
-		
+
 		if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes")) {
 			NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes");
-			String itemUuid =  extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
-			
+			String itemUuid = extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
+
 			return SkyblockerConfig.get().general.customDyeColors.getOrDefault(itemUuid, originalColor);
 		}
-		
+
 		return originalColor;
 	}
 }
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java
index 640bce9b..63dc6624 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java
@@ -14,20 +14,20 @@ import net.minecraft.nbt.NbtCompound;
 import net.minecraft.text.Text;
 
 @Mixin(ItemStack.class)
-public class ItemStackMixin {
+public abstract class ItemStackMixin {
 	@Shadow
 	@Nullable
 	private NbtCompound nbt;
 
 	@ModifyReturnValue(method = "getName", at = @At("RETURN"))
-	public Text skyblocker$customItemNames(Text original) {
+	private Text skyblocker$customItemNames(Text original) {
 		if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes"))  {
 			NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes");
-			String itemUuid =  extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
-			
+			String itemUuid = extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
+
 			return SkyblockerConfig.get().general.customItemNames.getOrDefault(itemUuid, original);
 		}
-		
+
 		return original;
 	}
 }
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorDyeColors.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorDyeColors.java
index dd5614d1..9385b4a1 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorDyeColors.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorDyeColors.java
@@ -3,14 +3,12 @@ package me.xmrvizzy.skyblocker.skyblock.item;
 import com.mojang.brigadier.Command;
 import com.mojang.brigadier.CommandDispatcher;
 import com.mojang.brigadier.arguments.StringArgumentType;
-
 import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
 import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
 import me.xmrvizzy.skyblocker.utils.Utils;
 import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
 import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
 import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
-import net.minecraft.client.MinecraftClient;
 import net.minecraft.command.CommandRegistryAccess;
 import net.minecraft.item.DyeableArmorItem;
 import net.minecraft.item.ItemStack;
@@ -18,11 +16,10 @@ import net.minecraft.nbt.NbtCompound;
 import net.minecraft.text.Text;
 
 public class CustomArmorDyeColors {
-
 	public static void init() {
 		ClientCommandRegistrationCallback.EVENT.register(CustomArmorDyeColors::registerCommands);
 	}
-	
+
 	private static void registerCommands(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess registryAccess) {
 		dispatcher.register(ClientCommandManager.literal("skyblocker")
 				.then(ClientCommandManager.literal("dyeColor")
@@ -30,58 +27,55 @@ public class CustomArmorDyeColors {
 						.then(ClientCommandManager.argument("hexCode", StringArgumentType.string())
 								.executes(context -> customizeDyeColor(context.getSource(), StringArgumentType.getString(context, "hexCode"))))));
 	}
-	
+
+	@SuppressWarnings("SameReturnValue")
 	private static int customizeDyeColor(FabricClientCommandSource source, String hex) {
-		MinecraftClient client = source.getClient();
-		ItemStack heldItem = client.player.getMainHandStack();
+		ItemStack heldItem = source.getPlayer().getMainHandStack();
 		NbtCompound nbt = (heldItem != null) ? heldItem.getNbt() : null;
-		
+
 		if (hex != null && !isHexadecimalColor(hex)) {
 			source.sendError(Text.translatable("skyblocker.customDyeColors.invalidHex"));
 			return Command.SINGLE_SUCCESS;
 		}
-		
-		if (Utils.isOnSkyblock() && heldItem != null && heldItem.getItem() instanceof DyeableArmorItem) {
-			if (nbt != null && nbt.contains("ExtraAttributes")) {
-				NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes");
-				String itemUuid =  extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
-				
-				if (itemUuid != null) {
-					Object2IntOpenHashMap<String> customDyeColors = SkyblockerConfig.get().general.customDyeColors;
-					
-					if (hex == null) {
-						if (customDyeColors.containsKey(itemUuid)) {
-							customDyeColors.removeInt(itemUuid);
-							SkyblockerConfig.save();
-							source.sendFeedback(Text.translatable("skyblocker.customDyeColors.removed"));
+
+		if (Utils.isOnSkyblock() && heldItem != null) {
+			if (heldItem.getItem() instanceof DyeableArmorItem) {
+				if (nbt != null && nbt.contains("ExtraAttributes")) {
+					NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes");
+					String itemUuid = extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
+
+					if (itemUuid != null) {
+						Object2IntOpenHashMap<String> customDyeColors = SkyblockerConfig.get().general.customDyeColors;
+
+						if (hex == null) {
+							if (customDyeColors.containsKey(itemUuid)) {
+								customDyeColors.removeInt(itemUuid);
+								SkyblockerConfig.save();
+								source.sendFeedback(Text.translatable("skyblocker.customDyeColors.removed"));
+							} else {
+								source.sendFeedback(Text.translatable("skyblocker.customDyeColors.neverHad"));
+							}
 						} else {
-							source.sendFeedback(Text.translatable("skyblocker.customDyeColors.neverHad"));
+							customDyeColors.put(itemUuid, Integer.decode("0x" + hex.replace("#", "")).intValue());
+							SkyblockerConfig.save();
+							source.sendFeedback(Text.translatable("skyblocker.customDyeColors.added"));
 						}
 					} else {
-						customDyeColors.put(itemUuid, Integer.decode("0x" + hex.replace("#", "")).intValue());
-						SkyblockerConfig.save();
-						source.sendFeedback(Text.translatable("skyblocker.customDyeColors.added"));
+						source.sendError(Text.translatable("skyblocker.customDyeColors.noItemUuid"));
 					}
-				} else {
-					source.sendError(Text.translatable("skyblocker.customDyeColors.noItemUuid"));
 				}
-			}
-		} else {
-			if (!(heldItem.getItem() instanceof DyeableArmorItem)) {
+			} else {
 				source.sendError(Text.translatable("skyblocker.customDyeColors.notDyeable"));
 				return Command.SINGLE_SUCCESS;
-			} else {
-				source.sendError(Text.translatable("skyblocker.customDyeColors.unableToSetColor"));
 			}
+		} else {
+			source.sendError(Text.translatable("skyblocker.customDyeColors.unableToSetColor"));
 		}
-		
+
 		return Command.SINGLE_SUCCESS;
 	}
-	
+
 	private static boolean isHexadecimalColor(String s) {
-		s = s.replace("#", "");
-		
-		return s.chars()
-				.allMatch(c -> "0123456789ABCDEFabcdef".indexOf(c) >= 0) && s.length() == 6;
+		return s.replace("#", "").chars().allMatch(c -> "0123456789ABCDEFabcdef".indexOf(c) >= 0) && s.replace("#", "").length() == 6;
 	}
 }
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomItemNames.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomItemNames.java
index 4ecff508..5d410947 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomItemNames.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomItemNames.java
@@ -2,14 +2,12 @@ package me.xmrvizzy.skyblocker.skyblock.item;
 
 import com.mojang.brigadier.Command;
 import com.mojang.brigadier.CommandDispatcher;
-
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
 import me.xmrvizzy.skyblocker.utils.Utils;
 import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
 import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
 import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
-import net.minecraft.client.MinecraftClient;
 import net.minecraft.command.CommandRegistryAccess;
 import net.minecraft.command.argument.TextArgumentType;
 import net.minecraft.item.ItemStack;
@@ -17,11 +15,10 @@ import net.minecraft.nbt.NbtCompound;
 import net.minecraft.text.Text;
 
 public class CustomItemNames {
-
 	public static void init() {
 		ClientCommandRegistrationCallback.EVENT.register(CustomItemNames::registerCommands);
 	}
-	
+
 	private static void registerCommands(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess registryAccess) {
 		dispatcher.register(ClientCommandManager.literal("skyblocker")
 				.then(ClientCommandManager.literal("renameItem")
@@ -29,19 +26,19 @@ public class CustomItemNames {
 						.then(ClientCommandManager.argument("textComponent", TextArgumentType.text())
 								.executes(context -> renameItem(context.getSource(), context.getArgument("textComponent", Text.class))))));
 	}
-	
+
+	@SuppressWarnings("SameReturnValue")
 	private static int renameItem(FabricClientCommandSource source, Text text) {
-		MinecraftClient client = source.getClient();
-		ItemStack heldItem = client.player.getMainHandStack();
+		ItemStack heldItem = source.getPlayer().getMainHandStack();
 		NbtCompound nbt = (heldItem != null) ? heldItem.getNbt() : null;
-		
+
 		if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes")) {
 			NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes");
-			String itemUuid =  extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
-			
+			String itemUuid = extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null;
+
 			if (itemUuid != null) {
 				Object2ObjectOpenHashMap<String, Text> customItemNames = SkyblockerConfig.get().general.customItemNames;
-				
+
 				if (text == null) {
 					if (customItemNames.containsKey(itemUuid)) {
 						//Remove custom item name when the text argument isn't passed
@@ -63,7 +60,7 @@ public class CustomItemNames {
 		} else {
 			source.sendError(Text.translatable("skyblocker.customItemNames.unableToSetName"));
 		}
-		
+
 		return Command.SINGLE_SUCCESS;
 	}
 }
-- 
cgit