UsernameHighlight
package me.blindedbythesun.nya.modules; import meteordevelopment.meteorclient.events.game.ReceiveMessageEvent; import meteordevelopment.meteorclient.settings.EnumSetting; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.settings.SettingGroup; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.orbit.EventHandler; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import java.util.Locale; public class UsernameHighlight extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); public enum HighlightColor { Black(Formatting.BLACK), DarkBlue(Formatting.DARK_BLUE), DarkGreen(Formatting.DARK_GREEN), DarkAqua(Formatting.DARK_AQUA), DarkRed(Formatting.DARK_RED), DarkPurple(Formatting.DARK_PURPLE), Gold(Formatting.GOLD), Gray(Formatting.GRAY), DarkGray(Formatting.DARK_GRAY), Blue(Formatting.BLUE), Green(Formatting.GREEN), Aqua(Formatting.AQUA), Red(Formatting.RED), LightPurple(Formatting.LIGHT_PURPLE), Yellow(Formatting.YELLOW); public final Formatting formatting; HighlightColor(Formatting formatting) { this.formatting = formatting; } } private final Setting<HighlightColor> highlightColor = sgGeneral.add(new EnumSetting.Builder<HighlightColor>() .name("highlight-color") .description("The color to highlight your username in chat messages") .defaultValue(HighlightColor.LightPurple) .build()); private String nameToHighlight; public UsernameHighlight() { super(me.blindedbythesun.nya.Addon.CATEGORY, "username-highlight", "Highlights your username in chat messages"); } @EventHandler private void onReceiveMessage(ReceiveMessageEvent event) { Text originalText = event.getMessage(); String lowerNameToHighlight = nameToHighlight.toLowerCase(Locale.ROOT); MutableText result = Text.empty(); for (Text sibling : originalText.getSiblings()) { String content = sibling.getString(); String lowerContent = content.toLowerCase(Locale.ROOT); int startIndex = 0; while (true) { int index = lowerContent.indexOf(lowerNameToHighlight, startIndex); if (index == -1) { result.append(Text.literal(content.substring(startIndex)).setStyle(sibling.getStyle())); break; } if (index > startIndex) { result.append(Text.literal(content.substring(startIndex, index)).setStyle(sibling.getStyle())); } result.append(Text.literal(content.substring(index, index + nameToHighlight.length())) .setStyle(sibling.getStyle().withColor(highlightColor.get().formatting))); startIndex = index + nameToHighlight.length(); } } event.setMessage(result); } @Override public void onActivate() { nameToHighlight = mc.player.getGameProfile().getName(); } @Override public void onDeactivate() { nameToHighlight = ""; } }
Leave a Comment