From dda3b525a03153c769138554835c3a8a382f3858 Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+chomens@users.noreply.github.com> Date: Thu, 8 Jan 2026 17:46:17 +0700 Subject: [PATCH] feat: autoprefix (for hcesaropz) --- .../chipmunkmod/command/CommandManager.java | 1 + .../commands/AutoPrefixCommand.java | 42 +++++++++++++++++++ .../chipmunkmod/commands/AutoSkinCommand.java | 2 +- .../config/ChipmunkModMigrations.java | 1 + .../chipmunkmod/config/Configuration.java | 1 + .../config/migrations/MigrationV5.java | 21 ++++++++++ .../chipmunkmod/modules/SelfCare.java | 25 +++++++++-- 7 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 src/main/java/land/chipmunk/chipmunkmod/commands/AutoPrefixCommand.java create mode 100644 src/main/java/land/chipmunk/chipmunkmod/config/migrations/MigrationV5.java diff --git a/src/main/java/land/chipmunk/chipmunkmod/command/CommandManager.java b/src/main/java/land/chipmunk/chipmunkmod/command/CommandManager.java index 2526bbe..eacbb62 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/command/CommandManager.java +++ b/src/main/java/land/chipmunk/chipmunkmod/command/CommandManager.java @@ -39,6 +39,7 @@ public class CommandManager { ReloadConfigCommand.register(this.dispatcher); SelfCareCommand.register(this.dispatcher); PrefixCommand.register(this.dispatcher); + AutoPrefixCommand.register(this.dispatcher); } public static LiteralArgumentBuilder literal (final String name) { diff --git a/src/main/java/land/chipmunk/chipmunkmod/commands/AutoPrefixCommand.java b/src/main/java/land/chipmunk/chipmunkmod/commands/AutoPrefixCommand.java new file mode 100644 index 0000000..f5c9c72 --- /dev/null +++ b/src/main/java/land/chipmunk/chipmunkmod/commands/AutoPrefixCommand.java @@ -0,0 +1,42 @@ +package land.chipmunk.chipmunkmod.commands; + +import com.mojang.brigadier.Command; +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.context.CommandContext; +import land.chipmunk.chipmunkmod.modules.SelfCare; +import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; +import net.minecraft.network.chat.Component; + +import static com.mojang.brigadier.arguments.StringArgumentType.*; +import static land.chipmunk.chipmunkmod.command.CommandManager.argument; +import static land.chipmunk.chipmunkmod.command.CommandManager.literal; + + +public class AutoPrefixCommand { + public static void register (final CommandDispatcher dispatcher) { + dispatcher.register( + literal("autoprefix") + .then( + argument("prefix", greedyString()) + .executes(AutoPrefixCommand::execute) + ) + ); + } + + public static int execute (final CommandContext context) { + final FabricClientCommandSource source = context.getSource(); + + final String prefix = getString(context, "prefix"); + + SelfCare.INSTANCE.targetPrefix = prefix; + + if (prefix.equalsIgnoreCase("off")) { + source.sendFeedback(Component.literal("Successfully disabled auto prefix")); + } else { + SelfCare.INSTANCE.hasPrefix = false; + source.sendFeedback(Component.literal("Set your prefix to: " + prefix)); + } + + return Command.SINGLE_SUCCESS; + } +} diff --git a/src/main/java/land/chipmunk/chipmunkmod/commands/AutoSkinCommand.java b/src/main/java/land/chipmunk/chipmunkmod/commands/AutoSkinCommand.java index 55cc2fe..8e833af 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/commands/AutoSkinCommand.java +++ b/src/main/java/land/chipmunk/chipmunkmod/commands/AutoSkinCommand.java @@ -30,7 +30,7 @@ public class AutoSkinCommand { SelfCare.INSTANCE.targetSkin = username; - if (username.equals("off")) { + if (username.equalsIgnoreCase("off")) { source.sendFeedback(Component.literal("Successfully disabled auto skin")); } else { SelfCare.INSTANCE.hasSkin = false; diff --git a/src/main/java/land/chipmunk/chipmunkmod/config/ChipmunkModMigrations.java b/src/main/java/land/chipmunk/chipmunkmod/config/ChipmunkModMigrations.java index 32330fa..028f56c 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/config/ChipmunkModMigrations.java +++ b/src/main/java/land/chipmunk/chipmunkmod/config/ChipmunkModMigrations.java @@ -12,5 +12,6 @@ public final class ChipmunkModMigrations extends AbstractMigrationManager { this.register(new MigrationV2()); this.register(new MigrationV3()); this.register(new MigrationV4()); + this.register(new MigrationV5()); } } diff --git a/src/main/java/land/chipmunk/chipmunkmod/config/Configuration.java b/src/main/java/land/chipmunk/chipmunkmod/config/Configuration.java index 861f7e7..de6dc2a 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/config/Configuration.java +++ b/src/main/java/land/chipmunk/chipmunkmod/config/Configuration.java @@ -18,6 +18,7 @@ public class Configuration { public CustomChat customChat = new CustomChat(); public SelfCare selfCare = new SelfCare(); public String autoSkinUsername = "off"; + public String autoPrefix = "off"; @ConfigSerializable public static class CommandManager { diff --git a/src/main/java/land/chipmunk/chipmunkmod/config/migrations/MigrationV5.java b/src/main/java/land/chipmunk/chipmunkmod/config/migrations/MigrationV5.java new file mode 100644 index 0000000..6a59315 --- /dev/null +++ b/src/main/java/land/chipmunk/chipmunkmod/config/migrations/MigrationV5.java @@ -0,0 +1,21 @@ +package land.chipmunk.chipmunkmod.config.migrations; + +import land.chipmunk.chipmunkmod.config.migration.ConfigMigration; +import org.spongepowered.configurate.transformation.ConfigurationTransformation; +import org.spongepowered.configurate.transformation.TransformAction; + +import static org.spongepowered.configurate.NodePath.path; + +public final class MigrationV5 implements ConfigMigration { + @Override + public int version () { + return 5; + } + + @Override + public ConfigurationTransformation create () { + return ConfigurationTransformation.builder() + .addAction(path("autoPrefix"), TransformAction.set(String.class, () -> "off")) + .build(); + } +} diff --git a/src/main/java/land/chipmunk/chipmunkmod/modules/SelfCare.java b/src/main/java/land/chipmunk/chipmunkmod/modules/SelfCare.java index 621f1a2..af617aa 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/modules/SelfCare.java +++ b/src/main/java/land/chipmunk/chipmunkmod/modules/SelfCare.java @@ -28,12 +28,16 @@ public class SelfCare implements Listener { public String targetSkin; public boolean hasSkin = false; + public String targetPrefix; + public boolean hasPrefix = false; + private boolean isCommandSpyEnabled = false; public SelfCare (final Minecraft client) { this.client = client; this.targetSkin = ChipmunkMod.CONFIG.autoSkinUsername == null ? "off" : ChipmunkMod.CONFIG.autoSkinUsername; + this.targetPrefix = ChipmunkMod.CONFIG.autoPrefix == null ? "off" : ChipmunkMod.CONFIG.autoPrefix; ListenerManager.addListener(this); } @@ -43,6 +47,7 @@ public class SelfCare implements Listener { public void cleanup () { hasSkin = false; + hasPrefix = false; isCommandSpyEnabled = false; } @@ -55,9 +60,18 @@ public class SelfCare implements Listener { else if (stringMessage.equals("Successfully set your skin to " + targetSkin + "'s")) hasSkin = true; else if ( - stringMessage.equals("Successfully removed your skin") || - stringMessage.startsWith("Successfully set your skin to ") + stringMessage.equals("Successfully removed your skin") + || stringMessage.startsWith("Successfully set your skin to ") ) hasSkin = false; + + else if ( + stringMessage.equals("You now have the tag: " + targetPrefix) + || stringMessage.equals("Something went wrong while saving the prefix. Please check console.") + ) hasPrefix = true; + else if ( + stringMessage.startsWith("You no longer have a tag") + || stringMessage.startsWith("You now have the tag: ") + ) hasPrefix = false; } @Override @@ -78,7 +92,8 @@ public class SelfCare implements Listener { networkHandler.send(new ServerboundChangeGameModePacket(targetGameMode)); } else if (!isCommandSpyEnabled && configCommandSpyEnabled && serverHasCommand("c")) { if ( - !CommandCore.INSTANCE.ready + CommandCore.INSTANCE.isSingleBlock + || !CommandCore.INSTANCE.ready || !CommandCore.INSTANCE.runFillCommand || !player.canUseGameMasterBlocks() ) { @@ -86,8 +101,10 @@ public class SelfCare implements Listener { } else { CommandCore.INSTANCE.run("c " + player.getStringUUID() + " on"); } - } else if (!hasSkin && !targetSkin.equalsIgnoreCase("off")) { + } else if (!hasSkin && serverHasCommand("skin") && !targetSkin.equalsIgnoreCase("off")) { networkHandler.sendCommand("skin " + targetSkin); + } else if (!hasPrefix && serverHasCommand("prefix") && !targetPrefix.equalsIgnoreCase("off")) { + networkHandler.sendCommand("prefix " + targetPrefix); } }