Skip to content

Commit 52595d0

Browse files
authored
Fix ChatUtils formatting in log files (#4061)
1 parent e5b64cc commit 52595d0

File tree

1 file changed

+46
-14
lines changed
  • src/main/java/meteordevelopment/meteorclient/utils/player

1 file changed

+46
-14
lines changed

src/main/java/meteordevelopment/meteorclient/utils/player/ChatUtils.java

+46-14
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package meteordevelopment.meteorclient.utils.player;
77

88
import baritone.api.BaritoneAPI;
9+
import com.mojang.brigadier.StringReader;
910
import meteordevelopment.meteorclient.MeteorClient;
1011
import meteordevelopment.meteorclient.mixininterface.IChatHud;
1112
import meteordevelopment.meteorclient.systems.config.Config;
@@ -30,7 +31,7 @@ public class ChatUtils {
3031

3132
@PostInit
3233
public static void init() {
33-
PREFIX = Text.literal("")
34+
PREFIX = Text.empty()
3435
.setStyle(Style.EMPTY.withFormatting(Formatting.GRAY))
3536
.append("[")
3637
.append(Text.literal("Meteor").setStyle(Style.EMPTY.withColor(TextColor.fromRgb(MeteorClient.ADDON.color.getPacked()))))
@@ -121,19 +122,19 @@ public static void sendMsg(int id, Formatting color, String message, Object... a
121122
}
122123

123124
public static void sendMsg(int id, @Nullable String prefixTitle, @Nullable Formatting prefixColor, Formatting messageColor, String messageContent, Object... args) {
124-
sendMsg(id, prefixTitle, prefixColor, formatMsg(messageContent, messageColor, args), messageColor);
125+
MutableText message = formatMsg(String.format(messageContent, args), messageColor);
126+
sendMsg(id, prefixTitle, prefixColor, message);
125127
}
126128

127129
public static void sendMsg(int id, @Nullable String prefixTitle, @Nullable Formatting prefixColor, String messageContent, Formatting messageColor) {
128-
MutableText message = Text.literal(messageContent);
129-
message.setStyle(message.getStyle().withFormatting(messageColor));
130+
MutableText message = formatMsg(messageContent, messageColor);
130131
sendMsg(id, prefixTitle, prefixColor, message);
131132
}
132133

133134
public static void sendMsg(int id, @Nullable String prefixTitle, @Nullable Formatting prefixColor, Text msg) {
134135
if (mc.world == null) return;
135136

136-
MutableText message = Text.literal("");
137+
MutableText message = Text.empty();
137138
message.append(getPrefix());
138139
if (prefixTitle != null) message.append(getCustomPrefix(prefixTitle, prefixColor));
139140
message.append(msg);
@@ -144,7 +145,7 @@ public static void sendMsg(int id, @Nullable String prefixTitle, @Nullable Forma
144145
}
145146

146147
private static MutableText getCustomPrefix(String prefixTitle, Formatting prefixColor) {
147-
MutableText prefix = Text.literal("");
148+
MutableText prefix = Text.empty();
148149
prefix.setStyle(prefix.getStyle().withFormatting(Formatting.GRAY));
149150

150151
prefix.append("[");
@@ -196,19 +197,50 @@ private static Text getPrefix() {
196197
return PREFIX;
197198
}
198199

199-
private static String formatMsg(String format, Formatting defaultColor, Object... args) {
200-
String msg = String.format(format, args);
201-
msg = msg.replace("(default)", defaultColor.toString());
202-
msg = msg.replace("(highlight)", Formatting.WHITE.toString());
203-
msg = msg.replace("(underline)", Formatting.UNDERLINE.toString());
200+
private static MutableText formatMsg(String message, Formatting defaultColor) {
201+
StringReader reader = new StringReader(message);
202+
MutableText text = Text.empty();
203+
Style style = Style.EMPTY.withFormatting(defaultColor);
204+
StringBuilder result = new StringBuilder();
205+
boolean formatting = false;
206+
while (reader.canRead()) {
207+
char c = reader.read();
208+
if (c == '(') {
209+
text.append(Text.literal(result.toString()).setStyle(style));
210+
result.setLength(0);
211+
result.append(c);
212+
formatting = true;
213+
} else {
214+
result.append(c);
215+
216+
if (formatting && c == ')') {
217+
switch (result.toString()) {
218+
case "(default)" -> {
219+
style = style.withFormatting(defaultColor);
220+
result.setLength(0);
221+
}
222+
case "(highlight)" -> {
223+
style = style.withFormatting(Formatting.WHITE);
224+
result.setLength(0);
225+
}
226+
case "(underline)" -> {
227+
style = style.withFormatting(Formatting.UNDERLINE);
228+
result.setLength(0);
229+
}
230+
}
231+
formatting = false;
232+
}
233+
}
234+
}
235+
236+
if (!result.isEmpty()) text.append(Text.literal(result.toString()).setStyle(style));
204237

205-
return msg;
238+
return text;
206239
}
207240

208241
public static MutableText formatCoords(Vec3d pos) {
209242
String coordsString = String.format("(highlight)(underline)%.0f, %.0f, %.0f(default)", pos.x, pos.y, pos.z);
210-
coordsString = formatMsg(coordsString, Formatting.GRAY);
211-
MutableText coordsText = Text.literal(coordsString);
243+
MutableText coordsText = formatMsg(coordsString, Formatting.GRAY);
212244
coordsText.setStyle(coordsText.getStyle()
213245
.withFormatting(Formatting.BOLD)
214246
.withClickEvent(new ClickEvent(

0 commit comments

Comments
 (0)