Username Highlight
unknown
java
a year ago
4.4 kB
6
Indexable
package me.blindedbythesun.nya.modules;
import meteordevelopment.meteorclient.events.game.ReceiveMessageEvent;
import meteordevelopment.meteorclient.settings.BoolSetting;
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.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 final Setting<Boolean> highlightInBrackets = sgGeneral.add(new BoolSetting.Builder()
.name("brackets-highlight").description("Highlights your username in brackets").defaultValue(false).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) {
String message = event.getMessage().getString();
if (!message.toLowerCase(Locale.ROOT).contains(nameToHighlight.toLowerCase(Locale.ROOT))) return;
event.setMessage(Text.of(highlight(message, nameToHighlight, highlightColor.get().formatting)));
}
private String highlight(String message, String target, Formatting color) {
StringBuilder result = new StringBuilder();
int lastIndex = 0;
while (true) {
int openBracket = message.indexOf('<', lastIndex);
int closeBracket = message.indexOf('>', openBracket);
if (openBracket == -1 || closeBracket == -1) {
result.append(highlightMatches(message.substring(lastIndex), target, color));
break;
}
result.append(highlightMatches(message.substring(lastIndex, openBracket), target, color));
if (highlightInBrackets.get()) {
String bracketedText = message.substring(openBracket + 1, closeBracket);
result.append('<')
.append(highlightMatches(bracketedText, target, color))
.append('>');
} else {
result.append(message, openBracket, closeBracket + 1);
}
lastIndex = closeBracket + 1;
}
return result.toString();
}
private String highlightMatches(String text, String target, Formatting color) {
StringBuilder result = new StringBuilder();
String lowerText = text.toLowerCase(Locale.ROOT);
String lowerTarget = target.toLowerCase(Locale.ROOT);
int lastIndex = 0;
while (true) {
int index = lowerText.indexOf(lowerTarget, lastIndex);
if (index == -1) break;
result.append(text, lastIndex, index)
.append(color)
.append(text, index, index + target.length())
.append(Formatting.RESET);
lastIndex = index + target.length();
}
result.append(text.substring(lastIndex));
return result.toString();
}
@Override
public void onActivate() {
nameToHighlight = mc.player.getGameProfile().getName();
}
@Override
public void onDeactivate() {
nameToHighlight = "";
}
}Editor is loading...
Leave a Comment