diff options
author | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-07-11 23:38:25 +0300 |
---|---|---|
committer | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-07-11 23:38:25 +0300 |
commit | 3a7dce4e3d60232805e6fb07ec5cbd5c26b7673e (patch) | |
tree | 74b0123a1d182e7323f86dce646ea256c522a14a /src/main/java/de/hysky/skyblocker/skyblock/item | |
parent | bd9a837d955f4d28e19180cd842624b143d8eae6 (diff) | |
download | Skyblocker-3a7dce4e3d60232805e6fb07ec5cbd5c26b7673e.tar.gz Skyblocker-3a7dce4e3d60232805e6fb07ec5cbd5c26b7673e.tar.bz2 Skyblocker-3a7dce4e3d60232805e6fb07ec5cbd5c26b7673e.zip |
Add color argument types and update usages
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/item')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorAnimatedDyes.java | 32 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorDyeColors.java | 23 |
2 files changed, 19 insertions, 36 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorAnimatedDyes.java b/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorAnimatedDyes.java index 76e7f02c..56ce7bf8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorAnimatedDyes.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorAnimatedDyes.java @@ -1,20 +1,15 @@ package de.hysky.skyblocker.skyblock.item; -import static com.mojang.brigadier.arguments.StringArgumentType.getString; -import static com.mojang.brigadier.arguments.StringArgumentType.word; -import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument; -import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; - import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.BoolArgumentType; import com.mojang.brigadier.arguments.IntegerArgumentType; - import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.utils.Constants; import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.Utils; +import de.hysky.skyblocker.utils.command.argumenttypes.color.ColorArgumentType; import dev.isxander.yacl3.config.v2.api.SerialEntry; import it.unimi.dsi.fastutil.objects.Object2ObjectFunction; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; @@ -27,6 +22,9 @@ import net.minecraft.registry.tag.ItemTags; import net.minecraft.text.Text; import net.minecraft.util.math.MathHelper; +import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument; +import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; + public class CustomArmorAnimatedDyes { private static final Object2ObjectOpenHashMap<AnimatedDye, AnimatedDyeStateTracker> STATE_TRACKER_MAP = new Object2ObjectOpenHashMap<>(); private static final Object2ObjectFunction<AnimatedDye, AnimatedDyeStateTracker> NEW_STATE_TRACKER = _dye -> AnimatedDyeStateTracker.create(); @@ -42,23 +40,17 @@ public class CustomArmorAnimatedDyes { dispatcher.register(literal(SkyblockerMod.NAMESPACE) .then(literal("custom") .then(literal("animatedDye") - .executes(context -> customizeAnimatedDye(context.getSource(), null, null, 0, false, 0)) - .then(argument("hex1", word()) - .then(argument("hex2", word()) + .executes(context -> customizeAnimatedDye(context.getSource(), Integer.MIN_VALUE, Integer.MIN_VALUE, 0, false, 0)) + .then(argument("hex1", ColorArgumentType.hex()) + .then(argument("hex2", ColorArgumentType.hex()) .then(argument("samples", IntegerArgumentType.integer(1)) .then(argument("cycleBack", BoolArgumentType.bool()) - .executes(context -> customizeAnimatedDye(context.getSource(), getString(context, "hex1"), getString(context, "hex2"), IntegerArgumentType.getInteger(context, "samples"), BoolArgumentType.getBool(context, "cycleBack"), DEFAULT_TICK_DELAY)) + .executes(context -> customizeAnimatedDye(context.getSource(), ColorArgumentType.getIntFromHex(context, "hex1"), ColorArgumentType.getIntFromHex(context, "hex2"), IntegerArgumentType.getInteger(context, "samples"), BoolArgumentType.getBool(context, "cycleBack"), DEFAULT_TICK_DELAY)) .then(argument("tickDelay", IntegerArgumentType.integer(0, 20)) - .executes(context ->customizeAnimatedDye(context.getSource(), getString(context, "hex1"), getString(context, "hex2"), IntegerArgumentType.getInteger(context, "samples"), BoolArgumentType.getBool(context, "cycleBack"), IntegerArgumentType.getInteger(context, "tickDelay"))))))))))); + .executes(context ->customizeAnimatedDye(context.getSource(), ColorArgumentType.getIntFromHex(context, "hex1"), ColorArgumentType.getIntFromHex(context, "hex2"), IntegerArgumentType.getInteger(context, "samples"), BoolArgumentType.getBool(context, "cycleBack"), IntegerArgumentType.getInteger(context, "tickDelay"))))))))))); } - private static int customizeAnimatedDye(FabricClientCommandSource source, String hex1, String hex2, int samples, boolean cycleBack, int tickDelay) { - if (hex1 != null && hex2 != null && (!CustomArmorDyeColors.isHexadecimalColor(hex1) || !CustomArmorDyeColors.isHexadecimalColor(hex2))) { - source.sendError(Constants.PREFIX.get().append(Text.translatable("skyblocker.customAnimatedDyes.invalidHex"))); - - return Command.SINGLE_SUCCESS; - } - + private static int customizeAnimatedDye(FabricClientCommandSource source, int color1, int color2, int samples, boolean cycleBack, int tickDelay) { ItemStack heldItem = source.getPlayer().getMainHandStack(); if (Utils.isOnSkyblock() && heldItem != null && !heldItem.isEmpty()) { @@ -68,7 +60,7 @@ public class CustomArmorAnimatedDyes { if (!itemUuid.isEmpty()) { Object2ObjectOpenHashMap<String, AnimatedDye> customAnimatedDyes = SkyblockerConfigManager.get().general.customAnimatedDyes; - if (hex1 == null && hex2 == null) { + if (color1 == Integer.MIN_VALUE && color2 == Integer.MIN_VALUE) { if (customAnimatedDyes.containsKey(itemUuid)) { customAnimatedDyes.remove(itemUuid); SkyblockerConfigManager.save(); @@ -77,7 +69,7 @@ public class CustomArmorAnimatedDyes { source.sendError(Constants.PREFIX.get().append(Text.translatable("skyblocker.customAnimatedDyes.neverHad"))); } } else { - AnimatedDye animatedDye = new AnimatedDye(Integer.decode("0x" + hex1.replace("#", "")), Integer.decode("0x" + hex2.replace("#", "")), samples, cycleBack, tickDelay); + AnimatedDye animatedDye = new AnimatedDye(color1, color2, samples, cycleBack, tickDelay); customAnimatedDyes.put(itemUuid, animatedDye); SkyblockerConfigManager.save(); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorDyeColors.java b/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorDyeColors.java index 013e0f8b..62ffcf73 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorDyeColors.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorDyeColors.java @@ -2,11 +2,11 @@ package de.hysky.skyblocker.skyblock.item; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; -import com.mojang.brigadier.arguments.StringArgumentType; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.utils.Constants; import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.Utils; +import de.hysky.skyblocker.utils.command.argumenttypes.color.ColorArgumentType; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; @@ -25,20 +25,15 @@ public class CustomArmorDyeColors { dispatcher.register(ClientCommandManager.literal("skyblocker") .then(ClientCommandManager.literal("custom") .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"))))))); + .executes(context -> customizeDyeColor(context.getSource(), Integer.MIN_VALUE)) + .then(ClientCommandManager.argument("hexCode", ColorArgumentType.hex()) + .executes(context -> customizeDyeColor(context.getSource(), ColorArgumentType.getIntFromHex(context, "hexCode"))))))); } @SuppressWarnings("SameReturnValue") - private static int customizeDyeColor(FabricClientCommandSource source, String hex) { + private static int customizeDyeColor(FabricClientCommandSource source, int color) { ItemStack heldItem = source.getPlayer().getMainHandStack(); - if (hex != null && !isHexadecimalColor(hex)) { - source.sendError(Constants.PREFIX.get().append(Text.translatable("skyblocker.customDyeColors.invalidHex"))); - return Command.SINGLE_SUCCESS; - } - if (Utils.isOnSkyblock() && heldItem != null) { if (heldItem.isIn(ItemTags.DYEABLE)) { String itemUuid = ItemUtils.getItemUuid(heldItem); @@ -46,7 +41,7 @@ public class CustomArmorDyeColors { if (!itemUuid.isEmpty()) { Object2IntOpenHashMap<String> customDyeColors = SkyblockerConfigManager.get().general.customDyeColors; - if (hex == null) { + if (color == Integer.MIN_VALUE) { if (customDyeColors.containsKey(itemUuid)) { customDyeColors.removeInt(itemUuid); SkyblockerConfigManager.save(); @@ -55,7 +50,7 @@ public class CustomArmorDyeColors { source.sendFeedback(Constants.PREFIX.get().append(Text.translatable("skyblocker.customDyeColors.neverHad"))); } } else { - customDyeColors.put(itemUuid, Integer.decode("0x" + hex.replace("#", "")).intValue()); + customDyeColors.put(itemUuid, color); SkyblockerConfigManager.save(); source.sendFeedback(Constants.PREFIX.get().append(Text.translatable("skyblocker.customDyeColors.added"))); } @@ -72,8 +67,4 @@ public class CustomArmorDyeColors { return Command.SINGLE_SUCCESS; } - - public static boolean isHexadecimalColor(String s) { - return s.replace("#", "").chars().allMatch(c -> "0123456789ABCDEFabcdef".indexOf(c) >= 0) && s.replace("#", "").length() == 6; - } } |