From 737d63642caa33f9133b0d277571ac3862585d64 Mon Sep 17 00:00:00 2001 From: Boy0000 Date: Fri, 9 May 2025 11:48:42 +0200 Subject: [PATCH] feat: add dye-click to settings --- .../com/hibiscusmc/hmccosmetics/config/Settings.java | 4 ++++ .../hmccosmetics/gui/type/types/TypeCosmetic.java | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java index ca2f9e12..1bc4e69b 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java @@ -53,6 +53,7 @@ public class Settings { private static final String COSMETIC_TYPE_SETTINGS_PATH = "cosmetic-type"; private static final String EQUIP_CLICK_TYPE = "equip-click"; private static final String UNEQUIP_CLICK_TYPE = "unequip-click"; + private static final String DYE_CLICK_TYPE = "dye-click"; private static final String SHADING_PATH = "shading"; private static final String FIRST_ROW_SHIFT_PATH = "first-row-shift"; private static final String SEQUENT_ROW_SHIFT_PATH = "sequent-row-shift"; @@ -130,6 +131,8 @@ public class Settings { @Getter private static String cosmeticUnEquipClickType; @Getter + private static String cosmeticDyeClickType; + @Getter private static boolean defaultShading; @Getter private static String firstRowShift; @@ -227,6 +230,7 @@ public class Settings { ConfigurationNode cosmeticTypeSettings = menuSettings.node(COSMETIC_TYPE_SETTINGS_PATH); cosmeticEquipClickType = cosmeticTypeSettings.node(EQUIP_CLICK_TYPE).getString("ALL"); cosmeticUnEquipClickType = cosmeticTypeSettings.node(UNEQUIP_CLICK_TYPE).getString("ALL"); + cosmeticDyeClickType = cosmeticTypeSettings.node(DYE_CLICK_TYPE).getString("ALL"); final var balloonSection = cosmeticSettings.node(BALLOON_OFFSET); balloonOffset = loadVector(balloonSection); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java index 3b06adf3..7afb8d63 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java @@ -59,17 +59,22 @@ public class TypeCosmetic extends Type { boolean isUnEquippingCosmetic = false; if (cosmeticHolder.getCosmetic(cosmetic.getSlot()) == cosmetic) isUnEquippingCosmetic = true; + String dyeClick = Settings.getCosmeticDyeClickType(); String requiredClick; if (isUnEquippingCosmetic) requiredClick = Settings.getCosmeticUnEquipClickType(); else requiredClick = Settings.getCosmeticEquipClickType(); MessagesUtil.sendDebugMessages("Required click type: " + requiredClick); MessagesUtil.sendDebugMessages("Click type: " + clickType.name()); - if (!requiredClick.equalsIgnoreCase("ANY") && !requiredClick.equalsIgnoreCase(clickType.name())) { + boolean isRequiredClick = requiredClick.equalsIgnoreCase("ANY") || requiredClick.equalsIgnoreCase(clickType.name()); + boolean isDyeClick = dyeClick.equalsIgnoreCase("ANY") || dyeClick.equalsIgnoreCase(clickType.name()); + if (!isRequiredClick && !isDyeClick) { MessagesUtil.sendMessage(viewer.getPlayer(), "invalid-click-type"); return; } + if (!isRequiredClick && isDyeClick) isUnEquippingCosmetic = false; + List actionStrings = new ArrayList<>(); ConfigurationNode actionConfig = config.node("actions"); @@ -101,9 +106,9 @@ public class TypeCosmetic extends Type { if (!actionConfig.node("on-equip").virtual()) actionStrings.addAll(actionConfig.node("on-equip").getList(String.class)); MessagesUtil.sendDebugMessages("on-equip"); // TODO: Redo this - if (cosmetic.isDyeable() && Hooks.isActiveHook("HMCColor")) { + if (cosmetic.isDyeable() && isDyeClick && Hooks.isActiveHook("HMCColor")) { DyeMenu.openMenu(viewer, cosmeticHolder, cosmetic); - } else { + } else if (isRequiredClick) { cosmeticHolder.addCosmetic(cosmetic); } }