Skip to content

Commit

Permalink
Add PlaceHolderAPI Support
Browse files Browse the repository at this point in the history
  • Loading branch information
ManInMyVan committed Sep 20, 2024
1 parent ad10ad9 commit 138304c
Show file tree
Hide file tree
Showing 15 changed files with 99 additions and 67 deletions.
3 changes: 2 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ repositories {
maven("https://repo.opencollab.dev/maven-releases/") // Cumulus (for Floodgate)
maven("https://repo.codemc.io/repository/maven-releases/") // PacketEvents
maven("https://repo.codemc.io/repository/maven-snapshots/")
maven("https://repo.extendedclip.com/content/repositories/placeholderapi/") // placeholderapi
mavenCentral()
// FastUtil, Discord-Webhooks
}
Expand All @@ -54,7 +55,7 @@ dependencies {
compileOnly("org.geysermc.floodgate:api:2.0-SNAPSHOT")
compileOnly("org.spigotmc:spigot-api:1.18.2-R0.1-SNAPSHOT")
compileOnly("com.viaversion:viaversion-api:4.9.4-SNAPSHOT")
//
compileOnly("me.clip:placeholderapi:2.11.6")
compileOnly("io.netty:netty-all:4.1.85.Final")
}

Expand Down
3 changes: 1 addition & 2 deletions src/main/java/ac/grim/grimac/GrimExternalAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,7 @@ public void setServerName(String name) {

@Getter private final Map<String, String> staticReplacements = new ConcurrentHashMap<>();

public String replaceVariables(GrimUser user, String content, boolean colors) {
if (colors) content = ChatColor.translateAlternateColorCodes('&', content);
public String replaceVariables(GrimUser user, String content) {
for (Map.Entry<String, String> entry : staticReplacements.entrySet()) {
content = content.replace(entry.getKey(), entry.getValue());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ 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, false);
message = MessageUtil.replacePlaceholders(getPlayer(), message);

Component component = MessageUtil.miniMessage(message);

Expand Down
1 change: 1 addition & 0 deletions src/main/java/ac/grim/grimac/commands/GrimHelp.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +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.replacePlaceholders(sender, string);
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(string));
}
}
Expand Down
68 changes: 37 additions & 31 deletions src/main/java/ac/grim/grimac/commands/GrimLog.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,44 +26,50 @@ 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");
failure = MessageUtil.replacePlaceholders(sender, 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.");
return;
}

MessageUtil.sendMessage(sender, MessageUtil.miniMessage(uploading));
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.");

FoliaScheduler.getAsyncScheduler().runNow(GrimAPI.INSTANCE.getPlugin(), (dummy) -> {
try {
URL mUrl = new URL("https://paste.grim.ac/data/post");
HttpURLConnection urlConn = (HttpURLConnection) mUrl.openConnection();
urlConn.setDoOutput(true);
urlConn.setRequestMethod("POST");
urlConn.addRequestProperty("User-Agent", "GrimAC/" + GrimAPI.INSTANCE.getExternalAPI().getGrimVersion());
urlConn.addRequestProperty("Content-Type", "text/yaml"); // Not really yaml, but looks nicer than plaintext
urlConn.setRequestProperty("Content-Length", Integer.toString(builder.length()));
urlConn.getOutputStream().write(builder.toString().getBytes(StandardCharsets.UTF_8));
String uploading = GrimAPI.INSTANCE.getConfigManager().getConfig().getStringElse("upload-log-start", "%prefix% &fUploading log... please wait");
uploading = MessageUtil.replacePlaceholders(sender, uploading);
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(uploading));

urlConn.getOutputStream().close();
FoliaScheduler.getAsyncScheduler().runNow(GrimAPI.INSTANCE.getPlugin(), (dummy) -> {
try {
URL mUrl = new URL("https://paste.grim.ac/data/post");
HttpURLConnection urlConn = (HttpURLConnection) mUrl.openConnection();
urlConn.setDoOutput(true);
urlConn.setRequestMethod("POST");
urlConn.addRequestProperty("User-Agent", "GrimAC/" + GrimAPI.INSTANCE.getExternalAPI().getGrimVersion());
urlConn.addRequestProperty("Content-Type", "text/yaml"); // Not really yaml, but looks nicer than plaintext
urlConn.setRequestProperty("Content-Length", Integer.toString(builder.length()));
urlConn.getOutputStream().write(builder.toString().getBytes(StandardCharsets.UTF_8));

int response = urlConn.getResponseCode();
urlConn.getOutputStream().close();

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

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

urlConn.disconnect();
} catch (Exception e) {
String message = MessageUtil.replacePlaceholders(sender, failure);
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
e.printStackTrace();
}
});
}
}
8 changes: 3 additions & 5 deletions src/main/java/ac/grim/grimac/commands/GrimProfile.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,33 +13,31 @@
import com.github.retrooper.packetevents.PacketEvents;
import com.github.retrooper.packetevents.manager.server.ServerVersion;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

@CommandAlias("grim|grimac")
public class GrimProfile extends BaseCommand {
@Subcommand("profile")
@CommandPermission("grim.profile")
@CommandCompletion("@players")
public void onConsoleDebug(CommandSender sender, OnlinePlayer target) {
Player player = null;
if (sender instanceof Player) player = (Player) sender;

// 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!");
alertString = MessageUtil.replacePlaceholders(sender, 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!");
message = MessageUtil.replacePlaceholders(sender, message);
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
return;
}

for (String message : GrimAPI.INSTANCE.getConfigManager().getConfig().getStringList("profile")) {
message = GrimAPI.INSTANCE.getExternalAPI().replaceVariables(grimPlayer, message, false);
message = MessageUtil.replacePlaceholders(grimPlayer, message);
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/ac/grim/grimac/commands/GrimReload.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public void onReload(CommandSender sender) {
}

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

}
1 change: 1 addition & 0 deletions src/main/java/ac/grim/grimac/commands/GrimSendAlert.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public class GrimSendAlert extends BaseCommand {
@Subcommand("sendalert")
@CommandPermission("grim.sendalert")
public void sendAlert(String string) {
string = MessageUtil.replacePlaceholders((Object) null, string);
Component message = MessageUtil.miniMessage(string);

for (Player bukkitPlayer : GrimAPI.INSTANCE.getAlertManager().getEnabledAlerts()) {
Expand Down
8 changes: 6 additions & 2 deletions src/main/java/ac/grim/grimac/commands/GrimSpectate.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,24 @@ 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!");
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
message = MessageUtil.replacePlaceholders(target, message);
MessageUtil.sendMessage(player, 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!");
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
message = MessageUtil.replacePlaceholders(target, message);
MessageUtil.sendMessage(player, 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", "<click:run_command:/grim stopspectating><hover:show_text:\"/grim stopspectating\">\n%prefix% &fClick here to return to previous location\n</hover></click>");
message = MessageUtil.replacePlaceholders(target, message);
grimPlayer.user.sendMessage(MessageUtil.miniMessage(message));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +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.");
message = MessageUtil.replacePlaceholders(sender, message);
MessageUtil.sendMessage(sender, MessageUtil.miniMessage(message));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import ac.grim.grimac.GrimAPI;
import ac.grim.grimac.utils.anticheat.LogUtil;
import ac.grim.grimac.utils.anticheat.MessageUtil;
import com.github.retrooper.packetevents.PacketEvents;
import com.github.retrooper.packetevents.event.PacketListenerAbstract;
import com.github.retrooper.packetevents.event.PacketReceiveEvent;
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/ac/grim/grimac/manager/AlertManagerImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,12 @@ 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.replacePlaceholders(player, 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.replacePlaceholders(player, alertString);
MessageUtil.sendMessage(player, MessageUtil.miniMessage(alertString));
}
}
Expand All @@ -42,10 +44,12 @@ 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.replacePlaceholders(player, 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.replacePlaceholders(player, alertString);
MessageUtil.sendMessage(player, MessageUtil.miniMessage(alertString));
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/ac/grim/grimac/manager/DiscordManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import ac.grim.grimac.manager.init.Initable;
import ac.grim.grimac.player.GrimPlayer;
import ac.grim.grimac.utils.anticheat.LogUtil;
import ac.grim.grimac.utils.anticheat.MessageUtil;
import club.minnced.discord.webhook.WebhookClient;
import club.minnced.discord.webhook.send.WebhookEmbed;
import club.minnced.discord.webhook.send.WebhookEmbedBuilder;
Expand Down Expand Up @@ -76,7 +77,7 @@ public void sendAlert(GrimPlayer player, String verbose, String checkName, Strin
String content = staticContent;
content = content.replace("%check%", checkName);
content = content.replace("%violations%", violations);
content = GrimAPI.INSTANCE.getExternalAPI().replaceVariables(player, content, false);
content = MessageUtil.replacePlaceholders(player, content);
content = content.replace("_", "\\_");

WebhookEmbedBuilder embed = new WebhookEmbedBuilder()
Expand Down
7 changes: 3 additions & 4 deletions src/main/java/ac/grim/grimac/manager/PunishmentManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,17 +95,16 @@ private String replaceAlertPlaceholders(String original, PunishGroup group, Chec
// Streams are slow but this isn't a hot path... it's fine.
String vl = group.violations.values().stream().filter((e) -> e == check).count() + "";

original = MessageUtil.format(original
original = original
.replace("[alert]", alertString)
.replace("[proxy]", alertString)
.replace("%check_name%", check.getCheckName())
.replace("%experimental%", check.isExperimental() ? experimentalSymbol : "")
.replace("%vl%", vl)
.replace("%verbose%", verbose)
.replace("%description%", check.getDescription())
);
.replace("%description%", check.getDescription());

original = GrimAPI.INSTANCE.getExternalAPI().replaceVariables(player, original, true);
original = MessageUtil.replacePlaceholders(player, original);

return original;
}
Expand Down
Loading

0 comments on commit 138304c

Please sign in to comment.