Skip to content

Commit

Permalink
Add MiniMessage Support
Browse files Browse the repository at this point in the history
  • Loading branch information
ManInMyVan committed Sep 20, 2024
1 parent fad39af commit ad10ad9
Show file tree
Hide file tree
Showing 23 changed files with 119 additions and 67 deletions.
3 changes: 3 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ dependencies {
implementation("com.github.grimanticheat:grimapi:1193c4fa41")
// Used for local testing: implementation("ac.grim.grimac:grimapi:1.0")

implementation("net.kyori:adventure-text-minimessage:4.17.0")
implementation("net.kyori:adventure-platform-bukkit:4.3.3")

implementation("org.jetbrains:annotations:24.1.0")
compileOnly("org.geysermc.floodgate:api:2.0-SNAPSHOT")
compileOnly("org.spigotmc:spigot-api:1.18.2-R0.1-SNAPSHOT")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
import ac.grim.grimac.checks.impl.exploit.ExploitA;
import ac.grim.grimac.checks.type.PacketCheck;
import ac.grim.grimac.player.GrimPlayer;
import ac.grim.grimac.utils.anticheat.MessageUtil;
import com.github.retrooper.packetevents.event.PacketReceiveEvent;
import com.github.retrooper.packetevents.protocol.packettype.PacketType;
import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientPluginMessage;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

Expand Down Expand Up @@ -41,11 +43,14 @@ public void handle(String channel, byte[] data) {
if (player.checkManager.getPrePredictionCheck(ExploitA.class).checkString(brand)) brand = "sent log4j";
if (!GrimAPI.INSTANCE.getConfigManager().isIgnoredClient(brand)) {
String message = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("client-brand-format", "%prefix% &f%player% joined using %brand%");
message = GrimAPI.INSTANCE.getExternalAPI().replaceVariables(getPlayer(), message, true);
message = GrimAPI.INSTANCE.getExternalAPI().replaceVariables(getPlayer(), message, false);

Component component = MessageUtil.miniMessage(message);

// sendMessage is async safe while broadcast isn't due to adventure
for (Player player : Bukkit.getOnlinePlayers()) {
if (player.hasPermission("grim.brand")) {
player.sendMessage(message);
MessageUtil.sendMessage(player, component);
}
}
}
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/ac/grim/grimac/commands/GrimHelp.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ public class GrimHelp extends BaseCommand {
@CommandPermission("grim.help")
public void onHelp(CommandSender sender) {
for (String string : GrimAPI.INSTANCE.getConfigManager().getConfig().getStringList("help")) {
string = MessageUtil.format(string);
sender.sendMessage(string);
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(string));
}
}
}
11 changes: 6 additions & 5 deletions src/main/java/ac/grim/grimac/commands/GrimLog.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ public void onLog(CommandSender sender, int flagId) {

if (builder == null) {
String failure = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("upload-log-not-found", "%prefix% &cUnable to find that log");
sender.sendMessage(MessageUtil.format(failure));
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(failure));
} else {
String uploading = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("upload-log-start", "%prefix% &fUploading log... please wait");
String success = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("upload-log", "%prefix% &fUploaded debug to: %url%");
String failure = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("upload-log-upload-failure", "%prefix% &cSomething went wrong while uploading this log, see console for more information.");

sender.sendMessage(MessageUtil.format(uploading));
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(uploading));

FoliaScheduler.getAsyncScheduler().runNow(GrimAPI.INSTANCE.getPlugin(), (dummy) -> {
try {
Expand All @@ -51,15 +51,16 @@ public void onLog(CommandSender sender, int flagId) {

if (response == HttpURLConnection.HTTP_CREATED) {
String responseURL = urlConn.getHeaderField("Location");
sender.sendMessage(MessageUtil.format(success.replace("%url%", "https://paste.grim.ac/" + responseURL)));
String message = success.replace("%url%", "https://paste.grim.ac/" + responseURL);
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
} else {
sender.sendMessage(MessageUtil.format(failure));
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(failure));
LogUtil.error("Returned response code " + response + ": " + urlConn.getResponseMessage());
}

urlConn.disconnect();
} catch (Exception e) {
sender.sendMessage(MessageUtil.format(failure));
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(failure));
e.printStackTrace();
}
});
Expand Down
11 changes: 4 additions & 7 deletions src/main/java/ac/grim/grimac/commands/GrimProfile.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
package ac.grim.grimac.commands;

import ac.grim.grimac.GrimAPI;
import ac.grim.grimac.checks.impl.aim.processor.AimProcessor;
import ac.grim.grimac.checks.impl.misc.ClientBrand;
import ac.grim.grimac.player.GrimPlayer;
import ac.grim.grimac.utils.anticheat.MessageUtil;
import ac.grim.grimac.utils.anticheat.MultiLibUtil;
import ac.grim.grimac.utils.math.GrimMath;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.CommandAlias;
import co.aikar.commands.annotation.CommandCompletion;
Expand All @@ -30,20 +27,20 @@ public void onConsoleDebug(CommandSender sender, OnlinePlayer target) {
// Short circuit due to minimum java requirements for MultiLib
if (PacketEvents.getAPI().getServerManager().getVersion().isNewerThanOrEquals(ServerVersion.V_1_18) && MultiLibUtil.isExternalPlayer(target.getPlayer())) {
String alertString = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("player-not-this-server", "%prefix% &cThis player isn't on this server!");
sender.sendMessage(MessageUtil.format(alertString));
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(alertString));
return;
}

GrimPlayer grimPlayer = GrimAPI.INSTANCE.getPlayerDataManager().getPlayer(target.getPlayer());
if (grimPlayer == null) {
String message = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("player-not-found", "%prefix% &cPlayer is exempt or offline!");
sender.sendMessage(MessageUtil.format(message));
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
return;
}

for (String message : GrimAPI.INSTANCE.getConfigManager().getConfig().getStringList("profile")) {
message = GrimAPI.INSTANCE.getExternalAPI().replaceVariables(grimPlayer, message, true);
sender.sendMessage(message);
message = GrimAPI.INSTANCE.getExternalAPI().replaceVariables(grimPlayer, message, false);
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
}
}
}
6 changes: 2 additions & 4 deletions src/main/java/ac/grim/grimac/commands/GrimReload.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package ac.grim.grimac.commands;

import ac.grim.grimac.GrimAPI;
import ac.grim.grimac.checks.Check;
import ac.grim.grimac.player.GrimPlayer;
import ac.grim.grimac.utils.anticheat.MessageUtil;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.CommandAlias;
import co.aikar.commands.annotation.CommandPermission;
import co.aikar.commands.annotation.Subcommand;
import com.github.retrooper.packetevents.netty.channel.ChannelHelper;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;

Expand All @@ -25,7 +22,8 @@ public void onReload(CommandSender sender) {
return;
}

sender.sendMessage(MessageUtil.format("%prefix% &fConfig has been reloaded."));
String message = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("reload", "%prefix% &fConfig has been reloaded.");
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
}

}
7 changes: 4 additions & 3 deletions src/main/java/ac/grim/grimac/commands/GrimSendAlert.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,22 @@
import co.aikar.commands.annotation.CommandAlias;
import co.aikar.commands.annotation.CommandPermission;
import co.aikar.commands.annotation.Subcommand;
import net.kyori.adventure.text.Component;
import org.bukkit.entity.Player;

@CommandAlias("grim|grimac")
public class GrimSendAlert extends BaseCommand {
@Subcommand("sendalert")
@CommandPermission("grim.sendalert")
public void sendAlert(String string) {
string = MessageUtil.format(string);
Component message = MessageUtil.miniMessage(string);

for (Player bukkitPlayer : GrimAPI.INSTANCE.getAlertManager().getEnabledAlerts()) {
bukkitPlayer.sendMessage(string);
MessageUtil.sendMessage(bukkitPlayer, message);
}

if (GrimAPI.INSTANCE.getConfigManager().getConfig().getBooleanElse("alerts.print-to-console", true)) {
LogUtil.console(string); // Print alert to console
LogUtil.console(message); // Print alert to console
}
}
}
19 changes: 4 additions & 15 deletions src/main/java/ac/grim/grimac/commands/GrimSpectate.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@
import co.aikar.commands.bukkit.contexts.OnlinePlayer;
import com.github.retrooper.packetevents.PacketEvents;
import com.github.retrooper.packetevents.manager.server.ServerVersion;
import io.github.retrooper.packetevents.adventure.serializer.legacy.LegacyComponentSerializer;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import org.bukkit.GameMode;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
Expand All @@ -28,32 +24,25 @@ public void onSpectate(CommandSender sender, @Optional OnlinePlayer target) {

if (target != null && target.getPlayer().getUniqueId().equals(player.getUniqueId())) {
String message = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("cannot-run-on-self", "%prefix% &cYou cannot use this command on yourself!");
sender.sendMessage(MessageUtil.format(message));
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
return;
}

if (target == null || (PacketEvents.getAPI().getServerManager().getVersion().isNewerThanOrEquals(ServerVersion.V_1_18) && MultiLibUtil.isExternalPlayer(target.getPlayer()))) {
String message = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("player-not-this-server", "%prefix% &cThis player isn't on this server!");
sender.sendMessage(MessageUtil.format(message));
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
return;
}
//hide player from tab list
if (GrimAPI.INSTANCE.getSpectateManager().enable(player)) {
GrimPlayer grimPlayer = GrimAPI.INSTANCE.getPlayerDataManager().getPlayer(player);
if (grimPlayer != null) {
String message = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("spectate-return", "\n%prefix% &fClick here to return to previous location\n");
grimPlayer.user.sendMessage(
LegacyComponentSerializer.legacy('&')
.deserialize(MessageUtil.formatWithNoColor(message))
.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.RUN_COMMAND, "/grim stopspectating"))
.hoverEvent(HoverEvent.showText(Component.text("/grim stopspectating")))
);
String message = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("spectate-return", "<click:run_command:/grim stopspectating><hover:show_text:\"/grim stopspectating\">\n%prefix% &fClick here to return to previous location\n</hover></click>");
grimPlayer.user.sendMessage(MessageUtil.miniMessage(message));
}
}

player.setGameMode(GameMode.SPECTATOR);
player.teleport(target.getPlayer());
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ public void onStopSpectate(CommandSender sender, String[] args) {
GrimAPI.INSTANCE.getSpectateManager().disable(player, teleportBack);
} else {
String message = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("cannot-spectate-return", "%prefix% &cYou can only do this after spectating a player.");
sender.sendMessage(MessageUtil.format(message));
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public void onPacketReceive(final PacketReceiveEvent event) {
}

for (Player bukkitPlayer : GrimAPI.INSTANCE.getAlertManager().getEnabledAlerts())
bukkitPlayer.sendMessage(alert);
MessageUtil.sendMessage(bukkitPlayer, MessageUtil.miniMessage(alert));
}

public static void sendPluginMessage(String message) {
Expand Down
12 changes: 4 additions & 8 deletions src/main/java/ac/grim/grimac/manager/AlertManagerImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,11 @@ public boolean hasAlertsEnabled(Player player) {
public void toggleAlerts(Player player) {
if (!enabledAlerts.remove(player)) {
String alertString = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("alerts-enabled", "%prefix% &fAlerts enabled");
alertString = MessageUtil.format(alertString);
player.sendMessage(alertString);
MessageUtil.sendMessage(player, MessageUtil.miniMessage(alertString));
enabledAlerts.add(player);
} else {
String alertString = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("alerts-disabled", "%prefix% &fAlerts disabled");
alertString = MessageUtil.format(alertString);
player.sendMessage(alertString);
MessageUtil.sendMessage(player, MessageUtil.miniMessage(alertString));
}
}

Expand All @@ -44,13 +42,11 @@ public boolean hasVerboseEnabled(Player player) {
public void toggleVerbose(Player player) {
if (!enabledVerbose.remove(player)) {
String alertString = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("verbose-enabled", "%prefix% &fVerbose enabled");
alertString = MessageUtil.format(alertString);
player.sendMessage(alertString);
MessageUtil.sendMessage(player, MessageUtil.miniMessage(alertString));
enabledVerbose.add(player);
} else {
String alertString = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("verbose-disabled", "%prefix% &fVerbose disabled");
alertString = MessageUtil.format(alertString);
player.sendMessage(alertString);
MessageUtil.sendMessage(player, MessageUtil.miniMessage(alertString));
}
}

Expand Down
6 changes: 3 additions & 3 deletions src/main/java/ac/grim/grimac/manager/PunishmentManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,10 @@ public boolean handleAlert(GrimPlayer player, String verbose, Check check) {
if (GrimAPI.INSTANCE.getAlertManager().getEnabledVerbose().size() > 0 && command.command.equals("[alert]")) {
sentDebug = true;
for (Player bukkitPlayer : GrimAPI.INSTANCE.getAlertManager().getEnabledVerbose()) {
bukkitPlayer.sendMessage(cmd);
MessageUtil.sendMessage(bukkitPlayer, MessageUtil.miniMessage(cmd));
}
if (GrimAPI.INSTANCE.getConfigManager().getConfig().getBooleanElse("verbose.print-to-console", false)) {
LogUtil.console(cmd); // Print verbose to console
LogUtil.console(MessageUtil.miniMessage(cmd)); // Print verbose to console
}
}

Expand All @@ -153,7 +153,7 @@ public boolean handleAlert(GrimPlayer player, String verbose, Check check) {
if (command.command.equals("[alert]")) {
sentDebug = true;
if (testMode) { // secret test mode
player.user.sendMessage(cmd);
player.user.sendMessage(MessageUtil.miniMessage(cmd));
continue;
}
cmd = "grim sendalert " + cmd; // Not test mode, we can add the command prefix
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/ac/grim/grimac/utils/anticheat/LogUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import ac.grim.grimac.GrimAPI;
import lombok.experimental.UtilityClass;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;

Expand Down Expand Up @@ -29,4 +30,7 @@ public void console(final String info) {
Bukkit.getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', info));
}

public void console(final Component info) {
MessageUtil.sendMessage(Bukkit.getConsoleSender(), info);
}
}
Loading

0 comments on commit ad10ad9

Please sign in to comment.