From f208ed59373c68425bf33359aab198a4be3effee Mon Sep 17 00:00:00 2001 From: DaTTV <104141141+DrFreezyYT@users.noreply.github.com> Date: Mon, 17 Feb 2025 21:03:39 +0100 Subject: [PATCH] Added EmrageGHC'S Report Command reigistered! Message fixes in PlayerManager.java! Registered command in BlazeSMP.java --- .../plugins/papermc/blazesmp/BlazeSMP.java | 2 + .../blazesmp/command/ReportCommand.java | 112 ++++++++++++++++++ .../blazesmp/manager/PlayerManager.java | 19 ++- 3 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 src/main/java/me/freezy/plugins/papermc/blazesmp/command/ReportCommand.java diff --git a/src/main/java/me/freezy/plugins/papermc/blazesmp/BlazeSMP.java b/src/main/java/me/freezy/plugins/papermc/blazesmp/BlazeSMP.java index cb1df5a..d5cfddf 100644 --- a/src/main/java/me/freezy/plugins/papermc/blazesmp/BlazeSMP.java +++ b/src/main/java/me/freezy/plugins/papermc/blazesmp/BlazeSMP.java @@ -2,6 +2,7 @@ package me.freezy.plugins.papermc.blazesmp; import lombok.Getter; import me.freezy.plugins.papermc.blazesmp.command.ClanCommand; +import me.freezy.plugins.papermc.blazesmp.command.ReportCommand; import me.freezy.plugins.papermc.blazesmp.listener.PlayerChatListener; import me.freezy.plugins.papermc.blazesmp.listener.PlayerCommandBlockerListener; import me.freezy.plugins.papermc.blazesmp.listener.PlayerJoinListener; @@ -62,6 +63,7 @@ public final class BlazeSMP extends JavaPlugin { this.log.info("Registering Commands..."); new ClanCommand().register(); + new ReportCommand().register(); this.log.info("Registered Commands!"); this.log.info("Registering EventListeners..."); diff --git a/src/main/java/me/freezy/plugins/papermc/blazesmp/command/ReportCommand.java b/src/main/java/me/freezy/plugins/papermc/blazesmp/command/ReportCommand.java new file mode 100644 index 0000000..c2b944e --- /dev/null +++ b/src/main/java/me/freezy/plugins/papermc/blazesmp/command/ReportCommand.java @@ -0,0 +1,112 @@ +package me.freezy.plugins.papermc.blazesmp.command; + +import me.freezy.plugins.papermc.blazesmp.command.util.SimpleCommand; +import net.kyori.adventure.text.minimessage.MiniMessage; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.io.IOException; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +public class ReportCommand extends SimpleCommand { + MiniMessage miniMessage = MiniMessage.miniMessage(); + + public ReportCommand() { + super("report"); + } + + @Override + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, @NotNull String[] args) { + if (!(sender instanceof Player reporter)) { + sender.sendMessage(miniMessage.deserialize("Du darfst das nicht")); + return true; + } + + if (args.length < 2) { + sender.sendMessage(miniMessage.deserialize("Benutze bitte: /report ")); + return true; + } + + OfflinePlayer reportedPlayer = Bukkit.getOfflinePlayer(args[0]); + if (!reportedPlayer.hasPlayedBefore() && !reportedPlayer.isOnline()) { + reporter.sendMessage(miniMessage.deserialize("Der Spieler existiert nicht oder war noch nie online!")); + return true; + } + + String reason = String.join(" ", args).substring(args[0].length()).trim(); + + reporter.sendMessage(miniMessage.deserialize(String.format("Du hast %s erfolgreich wegen %s gemeldet", reportedPlayer.getName(), reason))); + + sendReportToDiscord(reporter.getName(), reportedPlayer.getName(), reason, reporter.getUniqueId()); + + return true; + } + + private void sendReportToDiscord(String reporter, String reported, String reason, UUID reporterUUID) { + try { + String thumbnailUrl = "http://209.25.141.65:40018/v1/head/getHead/"; + String jsonPayload = "{" + + "\"username\": \"ReportBot\"," + + "\"embeds\": [{" + + "\"title\": \"Neuer Report\"," + + "\"color\": 16711680," // Red color + + "\"thumbnail\": {\"url\": \"" + thumbnailUrl+reporterUUID.toString() + "\"}," // Thumbnail + + "\"fields\": [" + + "{\"name\": \"Reporter\", \"value\": \"" + reporter + "\", \"inline\": true}," + + "{\"name\": \"Gemeldeter Spieler\", \"value\": \"" + reported + "\", \"inline\": true}," + + "{\"name\": \"Grund\", \"value\": \"" + reason + "\", \"inline\": false}" + + "]" + + "}]" + + "}"; + + HttpURLConnection connection = getHttpURLConnection(jsonPayload); + + int responseCode = connection.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_NO_CONTENT || responseCode == HttpURLConnection.HTTP_OK) { + System.out.println("Report sent to Discord successfully!"); + } else { + System.out.println("Failed to send report to Discord. Response code: " + responseCode); + } + connection.disconnect(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private static @NotNull HttpURLConnection getHttpURLConnection(String jsonPayload) throws IOException { + String webhookUrl = "https://discord.com/api/webhooks/1341116066067124306/9A0wtk8zFWZwoQZFzSpP4derV2Sv92flq28aiYGIWLOUR2h6tslWH1_RLMWCjLDjBQK1"; + URL url = new URL(webhookUrl); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setDoOutput(true); + + try (OutputStream os = connection.getOutputStream()) { + byte[] input = jsonPayload.getBytes(StandardCharsets.UTF_8); + os.write(input, 0, input.length); + } + return connection; + } + + @Override + public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { + if (args.length == 1) { + return Bukkit.getOnlinePlayers().stream() + .map(Player::getName) + .filter(name -> name.startsWith(args[0])) + .collect(Collectors.toList()); + } + return List.of(); + } +} \ No newline at end of file diff --git a/src/main/java/me/freezy/plugins/papermc/blazesmp/manager/PlayerManager.java b/src/main/java/me/freezy/plugins/papermc/blazesmp/manager/PlayerManager.java index ac1ca01..0dadac2 100644 --- a/src/main/java/me/freezy/plugins/papermc/blazesmp/manager/PlayerManager.java +++ b/src/main/java/me/freezy/plugins/papermc/blazesmp/manager/PlayerManager.java @@ -5,6 +5,7 @@ import me.freezy.plugins.papermc.blazesmp.module.Clan; import me.freezy.plugins.papermc.blazesmp.module.manager.Clans; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Team; @@ -63,14 +64,28 @@ public class PlayerManager { "[Player] " ) ); + if (clans.isInClan(playerUUID)) { + if (clans.isLeader(playerUUID)) { + prefix = prefix.append(MiniMessage.miniMessage().deserialize("*")); + } else if (clans.isVice(playerUUID)) { + prefix = prefix.append(MiniMessage.miniMessage().deserialize("*")); + } + } team.prefix(prefix); Clan clan = clans.getClanByMember(playerUUID); + Component suffix; if (clan != null) { - team.suffix(Component.text(" ").append(clan.getTag())); + suffix = (Component.text(" ").append(clan.getTag())); } else { - team.suffix(Component.empty()); + suffix = (Component.empty()); } + team.suffix(); team.addEntity(player); + team.addEntry(player.getName()); + + Component displayName = prefix.append(Component.text(player.getName())).append(suffix); + player.playerListName(displayName); + player.displayName(displayName); } private String generateRandomString(int length) {