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) {