From ac7e04829e4f203fc4acb92fe4a8bd06215f650f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Sat, 20 Dec 2025 17:46:02 +0100 Subject: [PATCH] introduced `ReportCreatedListener`, updated `ReportCreatedEvent` to use UUIDs for reporter and reported, and improved admin notifications for new reports --- .../metaGameplay/report/Report.java | 8 ++++++ .../report/ReportCreatedListener.java | 26 +++++++++++++++++++ .../antiInventoryMove/AntiInventoryMove.java | 1 + .../api/server/hooks/impl/WebsiteHook.java | 4 ++- .../spawn/core/event/ReportCreatedEvent.java | 4 ++- 5 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/report/ReportCreatedListener.java diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/report/Report.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/report/Report.java index 543abe0..5a2098b 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/report/Report.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/report/Report.java @@ -16,6 +16,7 @@ import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; +import org.bukkit.event.Listener; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -178,6 +179,13 @@ public class Report extends Appliance { issuer.sendMessage(component.build()); } + @Override + protected @NotNull List listeners() { + return List.of( + new ReportCreatedListener() + ); + } + @Override @NotNull protected List> commands() { diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/report/ReportCreatedListener.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/report/ReportCreatedListener.java new file mode 100644 index 0000000..8a6c988 --- /dev/null +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/report/ReportCreatedListener.java @@ -0,0 +1,26 @@ +package eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.report; + +import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener; +import eu.mhsl.craftattack.spawn.core.event.ReportCreatedEvent; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.event.EventHandler; + +public class ReportCreatedListener extends ApplianceListener { + @EventHandler + public void onReport(ReportCreatedEvent event) { + OfflinePlayer reporter = Bukkit.getOfflinePlayer(event.getReport().reporter()); + OfflinePlayer reported = Bukkit.getOfflinePlayer(event.getReport().reported()); + + Component message = Component.text( + "\uD83D\uDD14 Neuer Report von %s gegen %s: %s".formatted(reporter.getName(), reported.getName(), event.getReport().reason()), + NamedTextColor.YELLOW + ); + + Bukkit.getOnlinePlayers().stream() + .filter(player -> player.hasPermission("admin")) + .forEach(player -> player.sendMessage(message)); + } +} diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiInventoryMove/AntiInventoryMove.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiInventoryMove/AntiInventoryMove.java index 2b7a21d..ee99f6a 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiInventoryMove/AntiInventoryMove.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiInventoryMove/AntiInventoryMove.java @@ -11,6 +11,7 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; +@Appliance.Flags(enabled = false) public class AntiInventoryMove extends Appliance { private static final long errorTimeMargin = Ticks.SINGLE_TICK_DURATION_MS * 2; diff --git a/core/src/main/java/eu/mhsl/craftattack/spawn/core/api/server/hooks/impl/WebsiteHook.java b/core/src/main/java/eu/mhsl/craftattack/spawn/core/api/server/hooks/impl/WebsiteHook.java index 73e7552..c75d02b 100644 --- a/core/src/main/java/eu/mhsl/craftattack/spawn/core/api/server/hooks/impl/WebsiteHook.java +++ b/core/src/main/java/eu/mhsl/craftattack/spawn/core/api/server/hooks/impl/WebsiteHook.java @@ -28,14 +28,16 @@ public class WebsiteHook extends HttpHook { return HttpServer.nothing; })); - record CreatedReport(String reporter, String reported, String reason) {} + record CreatedReport(UUID reporter, UUID reported, String reason) {} this.addAction("report", new JsonAction<>(CreatedReport.class, createdReport -> { + Main.logger().info(String.format("New Report from Hook: (%s) Reporter: %s Reported: %s", createdReport.reason, createdReport.reporter, createdReport.reported)); SpawnEvent.call(new ReportCreatedEvent(new ReportCreatedEvent.CreatedReport(createdReport.reporter, createdReport.reported, createdReport.reason))); return HttpServer.nothing; })); record CreatedStrike(UUID uuid) {} this.addAction("strike", new JsonAction<>(CreatedStrike.class, createdStrike -> { + Main.logger().info(String.format("New Strike from Hook! (User %s)", createdStrike.uuid)); SpawnEvent.call(new StrikeCreatedEvent(new StrikeCreatedEvent.CreatedStrike(createdStrike.uuid))); return HttpServer.nothing; })); diff --git a/core/src/main/java/eu/mhsl/craftattack/spawn/core/event/ReportCreatedEvent.java b/core/src/main/java/eu/mhsl/craftattack/spawn/core/event/ReportCreatedEvent.java index 777c02c..6b41367 100644 --- a/core/src/main/java/eu/mhsl/craftattack/spawn/core/event/ReportCreatedEvent.java +++ b/core/src/main/java/eu/mhsl/craftattack/spawn/core/event/ReportCreatedEvent.java @@ -4,6 +4,8 @@ import org.bukkit.event.Event; import org.bukkit.event.HandlerList; import org.jetbrains.annotations.NotNull; +import java.util.UUID; + public class ReportCreatedEvent extends Event { private static final HandlerList HANDLERS = new HandlerList(); @Override @@ -15,7 +17,7 @@ public class ReportCreatedEvent extends Event { return HANDLERS; } - public record CreatedReport(String reporter, String reported, String reason) {} + public record CreatedReport(UUID reporter, UUID reported, String reason) {} private final CreatedReport report; public ReportCreatedEvent(CreatedReport report) {