diff --git a/src/main/java/wtf/hak/survivalfabric/mixin/PlayerManagerMixin.java b/src/main/java/wtf/hak/survivalfabric/mixin/PlayerManagerMixin.java index 3239912..b683469 100644 --- a/src/main/java/wtf/hak/survivalfabric/mixin/PlayerManagerMixin.java +++ b/src/main/java/wtf/hak/survivalfabric/mixin/PlayerManagerMixin.java @@ -49,41 +49,39 @@ public abstract class PlayerManagerMixin { @Inject(method = {"broadcast(Lnet/minecraft/network/message/SignedMessage;Lnet/minecraft/server/network/ServerPlayerEntity;Lnet/minecraft/network/message/MessageType$Parameters;)V"}, at = {@At("HEAD")}, cancellable = true) private void onBroadcast(SignedMessage message, ServerPlayerEntity sender, MessageType.Parameters parameters, CallbackInfo ci) { - if (sender != null && ConfigManager.getConfig().chatMessageEnabled) { + if (sender != null) { String rawMessage = message.getContent().getString().trim(); - if (sender != null && ConfigManager.getConfig().chatCalcEnabled) { + boolean isCalcEnabled = ConfigManager.getConfig().chatCalcEnabled; + boolean isMsgEnabled = ConfigManager.getConfig().chatMessageEnabled; + + String processedMessage = rawMessage; + + if (isCalcEnabled) { String expression = rawMessage.endsWith("=") ? rawMessage.substring(0, rawMessage.length() - 1).trim() : rawMessage; try { String result = String.valueOf(evaluateExpression(expression)); - String old = rawMessage; - rawMessage += "§6"; - if (rawMessage.contains(" ")) rawMessage += " "; - if (!old.trim().endsWith("=")) rawMessage += "="; - if (rawMessage.contains(" ")) rawMessage += " "; - rawMessage += (result.endsWith(".0")) ? result.substring(0, result.length() - 2) : result; - } catch (Exception e) { - } + StringBuilder sb = new StringBuilder(rawMessage).append("§6"); + + if (rawMessage.contains(" ")) sb.append(" "); + if (!rawMessage.endsWith("=")) sb.append("="); + if (rawMessage.contains(" ")) sb.append(" "); + + sb.append(result.endsWith(".0") ? result.substring(0, result.length() - 2) : result); + processedMessage = sb.toString(); + } catch (Exception ignored) {} } - Text text = Text.literal(String.format(ConfigManager.getConfig().chatMessage, sender.getName().getString(), rawMessage)); - sender.getServer().getPlayerManager().broadcast(text, false); + + if (isMsgEnabled) { + String formatted = String.format(ConfigManager.getConfig().chatMessage, sender.getName().getString(), processedMessage); + sender.getServer().getPlayerManager().broadcast(Text.literal(formatted), false); + } else if (isCalcEnabled) { + String formatted = "<" + sender.getName().getString() + "> " + processedMessage; + sender.getServer().getPlayerManager().broadcast(Text.literal(formatted), false); + } + ci.cancel(); - } else if (sender != null && ConfigManager.getConfig().chatCalcEnabled) { - String rawMessage = message.getContent().getString().trim(); - String expression = rawMessage.endsWith("=") ? rawMessage.substring(0, rawMessage.length() - 1).trim() : rawMessage; - try { - String result = String.valueOf(evaluateExpression(expression)); - String old = rawMessage; - rawMessage += "§6"; - if (rawMessage.contains(" ")) rawMessage += " "; - if (!old.trim().endsWith("=")) rawMessage += "="; - if (rawMessage.contains(" ")) rawMessage += " "; - rawMessage += (result.endsWith(".0")) ? result.substring(0, result.length() - 2) : result; - Text formattedMessage = Text.literal("<" + sender.getName().getString() + "> " + rawMessage); - sender.getServer().getPlayerManager().broadcast(formattedMessage, false); - ci.cancel(); - } catch (Exception e) { - } } + } private double evaluateExpression(String expression) {