From 04b4941e65693f8d6b55f924781d7dd7cd26b1d5 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Sat, 18 May 2024 01:24:05 -0400 Subject: commands: EntityHighlight, improved MapLocate. --- .../commands/EntityHighlightCommand.java | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/main/java/org/chrisoft/trashyaddon/commands/EntityHighlightCommand.java (limited to 'src/main/java/org/chrisoft/trashyaddon/commands/EntityHighlightCommand.java') diff --git a/src/main/java/org/chrisoft/trashyaddon/commands/EntityHighlightCommand.java b/src/main/java/org/chrisoft/trashyaddon/commands/EntityHighlightCommand.java new file mode 100644 index 0000000..c29dfa4 --- /dev/null +++ b/src/main/java/org/chrisoft/trashyaddon/commands/EntityHighlightCommand.java @@ -0,0 +1,81 @@ +package org.chrisoft.trashyaddon.commands; + +import meteordevelopment.meteorclient.commands.Command; +import meteordevelopment.meteorclient.utils.render.color.Color; +import net.minecraft.command.CommandSource; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import net.minecraft.entity.Entity; +import org.chrisoft.trashyaddon.commands.argument.CEntityArgumentType; +import org.chrisoft.trashyaddon.commands.argument.ColorCodeArgumentType; + +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import static com.mojang.brigadier.Command.SINGLE_SUCCESS; +import static meteordevelopment.meteorclient.MeteorClient.mc; + +/* +Usage: +eh set : Highlight targeted entities with specified color +eh remove : Remove highlight from targeted entities +eh clear : Remove highlight from all entities +Note: This command pulls settings from your ESP module. + */ + +public class EntityHighlightCommand extends Command { + private final static HashMap entityColors = new HashMap<>(); + + public static void clearColors() { entityColors.clear(); } + public static void setEntityColor(Entity e, Color c) { + entityColors.put(e.getUuid(), c); + } + public static void setEntityColors(List entities, Color c) { + for (Entity e : entities) + setEntityColor(e, c); + } + public static void removeEntityColor(Entity e) { + entityColors.remove(e.getUuid()); + } + public static void removeEntityColors(List entities) { + for (Entity e : entities) + removeEntityColor(e); + } + public static Color getEntityColor(Entity e) { + return entityColors.get(e.getUuid()); + } + + public EntityHighlightCommand() { + super("eh", "Highlight selected entities."); + } + + @Override + public void build(LiteralArgumentBuilder builder) { + builder.then( + argument("match", CEntityArgumentType.entities()).then( + literal("set").then( + argument("color", ColorCodeArgumentType.colorCode()).executes(ctx -> { + CEntitySelector es = ctx.getArgument("match", CEntitySelector.class); + List entities = es.getClientSideEntityMatches(mc.world, mc.player.getPos()); + setEntityColors(entities, ctx.getArgument("color", Color.class)); + info("Successfully set highlight for " + entities.size() + " entity(ies)."); + return SINGLE_SUCCESS; + } + ))).then( + literal("remove").executes(ctx -> { + CEntitySelector es = ctx.getArgument("match", CEntitySelector.class); + List entities = es.getClientSideEntityMatches(mc.world, mc.player.getPos()); + removeEntityColors(entities); + info("Successfully removed highlight for " + entities.size() + " entity(ies)."); + return SINGLE_SUCCESS; + }) + ) + ).then( + literal("clear").executes(ctx -> { + clearColors(); + info("Successfully removed highlight for all entities."); + return SINGLE_SUCCESS; + }) + ); + } +} -- cgit v1.2.3