From 7a53c39ec09f3c718ede505caaed86f5dfab3e24 Mon Sep 17 00:00:00 2001 From: BoomEaro <21033866+BoomEaro@users.noreply.github.com> Date: Mon, 25 Mar 2024 13:55:29 +0200 Subject: [PATCH] Attempt to fix aban notify --- .../banmanager/bukkit/BukkitServer.java | 10 ++++- .../bukkit/api/events/PlayerABanEvent.java | 17 ++++++++ .../bukkit/api/events/PlayerABannedEvent.java | 17 ++++++++ .../bukkit/api/events/PlayerAUnbanEvent.java | 25 +++++++++++ .../bukkit/listeners/BanListener.java | 19 +++------ .../bukkit/listeners/HookListener.java | 15 ++++++- .../banmanager/bungee/BungeeServer.java | 10 ++++- .../bungee/api/events/PlayerABanEvent.java | 17 ++++++++ .../bungee/api/events/PlayerABannedEvent.java | 17 ++++++++ .../bungee/api/events/PlayerAUnbanEvent.java | 25 +++++++++++ .../bungee/listeners/BanListener.java | 10 +++-- .../common/listeners/CommonBanListener.java | 41 +++++++++++++++++++ .../common/storage/PlayerABanStorage.java | 8 ++-- 13 files changed, 207 insertions(+), 24 deletions(-) create mode 100644 bukkit/src/main/java/me/confuser/banmanager/bukkit/api/events/PlayerABanEvent.java create mode 100644 bukkit/src/main/java/me/confuser/banmanager/bukkit/api/events/PlayerABannedEvent.java create mode 100644 bukkit/src/main/java/me/confuser/banmanager/bukkit/api/events/PlayerAUnbanEvent.java create mode 100644 bungee/src/main/java/me/confuser/banmanager/bungee/api/events/PlayerABanEvent.java create mode 100644 bungee/src/main/java/me/confuser/banmanager/bungee/api/events/PlayerABannedEvent.java create mode 100644 bungee/src/main/java/me/confuser/banmanager/bungee/api/events/PlayerAUnbanEvent.java diff --git a/bukkit/src/main/java/me/confuser/banmanager/bukkit/BukkitServer.java b/bukkit/src/main/java/me/confuser/banmanager/bukkit/BukkitServer.java index a6039cfb..0d8ab3a1 100644 --- a/bukkit/src/main/java/me/confuser/banmanager/bukkit/BukkitServer.java +++ b/bukkit/src/main/java/me/confuser/banmanager/bukkit/BukkitServer.java @@ -128,13 +128,21 @@ public CommonEvent callEvent(String name, Object... args) { case "PlayerBanEvent": event = new PlayerBanEvent((PlayerBanData) args[0], (boolean) args[1]); break; + case "PlayerABanEvent": + event = new PlayerABanEvent((PlayerBanData) args[0], (boolean) args[1]); + break; case "PlayerBannedEvent": event = new PlayerBannedEvent((PlayerBanData) args[0], (boolean) args[1]); break; + case "PlayerABannedEvent": + event = new PlayerABannedEvent((PlayerBanData) args[0], (boolean) args[1]); + break; case "PlayerUnbanEvent": event = new PlayerUnbanEvent((PlayerBanData) args[0], (PlayerData) args[1], (String) args[2]); break; - + case "PlayerAUnbanEvent": + event = new PlayerAUnbanEvent((PlayerBanData) args[0], (PlayerData) args[1], (String) args[2]); + break; case "IpBanEvent": event = new IpBanEvent((IpBanData) args[0], (boolean) args[1]); break; diff --git a/bukkit/src/main/java/me/confuser/banmanager/bukkit/api/events/PlayerABanEvent.java b/bukkit/src/main/java/me/confuser/banmanager/bukkit/api/events/PlayerABanEvent.java new file mode 100644 index 00000000..e72aa78b --- /dev/null +++ b/bukkit/src/main/java/me/confuser/banmanager/bukkit/api/events/PlayerABanEvent.java @@ -0,0 +1,17 @@ +package me.confuser.banmanager.bukkit.api.events; + +import lombok.Getter; +import me.confuser.banmanager.common.data.PlayerBanData; + + +public class PlayerABanEvent extends SilentCancellableEvent { + + @Getter + private PlayerBanData ban; + + public PlayerABanEvent(PlayerBanData ban, boolean isSilent) { + super(isSilent, true); + this.ban = ban; + } + +} diff --git a/bukkit/src/main/java/me/confuser/banmanager/bukkit/api/events/PlayerABannedEvent.java b/bukkit/src/main/java/me/confuser/banmanager/bukkit/api/events/PlayerABannedEvent.java new file mode 100644 index 00000000..b9de0449 --- /dev/null +++ b/bukkit/src/main/java/me/confuser/banmanager/bukkit/api/events/PlayerABannedEvent.java @@ -0,0 +1,17 @@ +package me.confuser.banmanager.bukkit.api.events; + +import lombok.Getter; +import me.confuser.banmanager.common.data.PlayerBanData; + + +public class PlayerABannedEvent extends SilentEvent { + + @Getter + private PlayerBanData ban; + + public PlayerABannedEvent(PlayerBanData ban, boolean isSilent) { + super(isSilent, true); + this.ban = ban; + } + +} diff --git a/bukkit/src/main/java/me/confuser/banmanager/bukkit/api/events/PlayerAUnbanEvent.java b/bukkit/src/main/java/me/confuser/banmanager/bukkit/api/events/PlayerAUnbanEvent.java new file mode 100644 index 00000000..3690e55b --- /dev/null +++ b/bukkit/src/main/java/me/confuser/banmanager/bukkit/api/events/PlayerAUnbanEvent.java @@ -0,0 +1,25 @@ +package me.confuser.banmanager.bukkit.api.events; + +import lombok.Getter; +import me.confuser.banmanager.common.data.PlayerBanData; +import me.confuser.banmanager.common.data.PlayerData; + + +public class PlayerAUnbanEvent extends CustomCancellableEvent { + + @Getter + private PlayerBanData ban; + @Getter + private PlayerData actor; + @Getter + private String reason; + + public PlayerAUnbanEvent(PlayerBanData ban, PlayerData actor, String reason) { + super(true); + + this.ban = ban; + this.actor = actor; + this.reason = reason; + } + +} diff --git a/bukkit/src/main/java/me/confuser/banmanager/bukkit/listeners/BanListener.java b/bukkit/src/main/java/me/confuser/banmanager/bukkit/listeners/BanListener.java index 29eb0f93..9c0f6e20 100644 --- a/bukkit/src/main/java/me/confuser/banmanager/bukkit/listeners/BanListener.java +++ b/bukkit/src/main/java/me/confuser/banmanager/bukkit/listeners/BanListener.java @@ -1,24 +1,12 @@ package me.confuser.banmanager.bukkit.listeners; - -import me.confuser.banmanager.bukkit.api.events.IpBannedEvent; -import me.confuser.banmanager.bukkit.api.events.IpRangeBannedEvent; -import me.confuser.banmanager.bukkit.api.events.NameBannedEvent; -import me.confuser.banmanager.bukkit.api.events.PlayerBannedEvent; +import me.confuser.banmanager.bukkit.api.events.*; import me.confuser.banmanager.common.BanManagerPlugin; -import me.confuser.banmanager.common.CommonPlayer; -import me.confuser.banmanager.common.commands.CommonSender; -import me.confuser.banmanager.common.data.*; import me.confuser.banmanager.common.listeners.CommonBanListener; -import me.confuser.banmanager.common.util.DateUtils; -import me.confuser.banmanager.common.util.IPUtils; -import me.confuser.banmanager.common.util.Message; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import java.util.List; - public class BanListener implements Listener { private final CommonBanListener listener; @@ -32,6 +20,11 @@ public void notifyOnBan(PlayerBannedEvent event) { listener.notifyOnBan(event.getBan(), event.isSilent()); } + @EventHandler(priority = EventPriority.MONITOR) + public void notifyOnABan(PlayerABannedEvent event) { + listener.notifyOnABan(event.getBan(), event.isSilent()); + } + @EventHandler(priority = EventPriority.MONITOR) public void notifyOnIpBan(IpBannedEvent event) { listener.notifyOnBan(event.getBan(), event.isSilent()); diff --git a/bukkit/src/main/java/me/confuser/banmanager/bukkit/listeners/HookListener.java b/bukkit/src/main/java/me/confuser/banmanager/bukkit/listeners/HookListener.java index c46f1d2f..775c4b2f 100644 --- a/bukkit/src/main/java/me/confuser/banmanager/bukkit/listeners/HookListener.java +++ b/bukkit/src/main/java/me/confuser/banmanager/bukkit/listeners/HookListener.java @@ -24,11 +24,24 @@ public void onBan(final PlayerBannedEvent event) { listener.onBan(event.getBan(), false); } + @EventHandler(priority = EventPriority.MONITOR) + public void onABan(final PlayerABanEvent event) { + listener.onBan(event.getBan(), true); + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onABan(final PlayerABannedEvent event) { + listener.onBan(event.getBan(), false); + } + @EventHandler(priority = EventPriority.MONITOR) public void onUnban(final PlayerUnbanEvent event) { listener.onUnban(event.getBan(), event.getActor(), event.getReason()); } - + @EventHandler(priority = EventPriority.MONITOR) + public void onAUnban(final PlayerAUnbanEvent event) { + listener.onUnban(event.getBan(), event.getActor(), event.getReason()); + } @EventHandler(priority = EventPriority.MONITOR) public void onMute(final PlayerMuteEvent event) { listener.onMute(event.getMute(), true); diff --git a/bungee/src/main/java/me/confuser/banmanager/bungee/BungeeServer.java b/bungee/src/main/java/me/confuser/banmanager/bungee/BungeeServer.java index d70083ef..68a959d7 100755 --- a/bungee/src/main/java/me/confuser/banmanager/bungee/BungeeServer.java +++ b/bungee/src/main/java/me/confuser/banmanager/bungee/BungeeServer.java @@ -113,13 +113,21 @@ public CommonEvent callEvent(String name, Object... args) { case "PlayerBanEvent": event = new PlayerBanEvent((PlayerBanData) args[0], (boolean) args[1]); break; + case "PlayerABanEvent": + event = new PlayerABanEvent((PlayerBanData) args[0], (boolean) args[1]); + break; case "PlayerBannedEvent": event = new PlayerBannedEvent((PlayerBanData) args[0], (boolean) args[1]); break; + case "PlayerABannedEvent": + event = new PlayerABannedEvent((PlayerBanData) args[0], (boolean) args[1]); + break; case "PlayerUnbanEvent": event = new PlayerUnbanEvent((PlayerBanData) args[0], (PlayerData) args[1], (String) args[2]); break; - + case "PlayerAUnbanEvent": + event = new PlayerAUnbanEvent((PlayerBanData) args[0], (PlayerData) args[1], (String) args[2]); + break; case "IpBanEvent": event = new IpBanEvent((IpBanData) args[0], (boolean) args[1]); break; diff --git a/bungee/src/main/java/me/confuser/banmanager/bungee/api/events/PlayerABanEvent.java b/bungee/src/main/java/me/confuser/banmanager/bungee/api/events/PlayerABanEvent.java new file mode 100644 index 00000000..41521a1b --- /dev/null +++ b/bungee/src/main/java/me/confuser/banmanager/bungee/api/events/PlayerABanEvent.java @@ -0,0 +1,17 @@ +package me.confuser.banmanager.bungee.api.events; + +import lombok.Getter; +import me.confuser.banmanager.common.data.PlayerBanData; + + +public class PlayerABanEvent extends SilentCancellableEvent { + + @Getter + private PlayerBanData ban; + + public PlayerABanEvent(PlayerBanData ban, boolean isSilent) { + super(isSilent); + this.ban = ban; + } + +} diff --git a/bungee/src/main/java/me/confuser/banmanager/bungee/api/events/PlayerABannedEvent.java b/bungee/src/main/java/me/confuser/banmanager/bungee/api/events/PlayerABannedEvent.java new file mode 100644 index 00000000..23bd7d04 --- /dev/null +++ b/bungee/src/main/java/me/confuser/banmanager/bungee/api/events/PlayerABannedEvent.java @@ -0,0 +1,17 @@ +package me.confuser.banmanager.bungee.api.events; + +import lombok.Getter; +import me.confuser.banmanager.common.data.PlayerBanData; + + +public class PlayerABannedEvent extends SilentEvent { + + @Getter + private PlayerBanData ban; + + public PlayerABannedEvent(PlayerBanData ban, boolean isSilent) { + super(isSilent); + this.ban = ban; + } + +} diff --git a/bungee/src/main/java/me/confuser/banmanager/bungee/api/events/PlayerAUnbanEvent.java b/bungee/src/main/java/me/confuser/banmanager/bungee/api/events/PlayerAUnbanEvent.java new file mode 100644 index 00000000..c6cf2412 --- /dev/null +++ b/bungee/src/main/java/me/confuser/banmanager/bungee/api/events/PlayerAUnbanEvent.java @@ -0,0 +1,25 @@ +package me.confuser.banmanager.bungee.api.events; + +import lombok.Getter; +import me.confuser.banmanager.common.data.PlayerBanData; +import me.confuser.banmanager.common.data.PlayerData; + + +public class PlayerAUnbanEvent extends CustomCancellableEvent { + + @Getter + private PlayerBanData ban; + @Getter + private PlayerData actor; + @Getter + private String reason; + + public PlayerAUnbanEvent(PlayerBanData ban, PlayerData actor, String reason) { + super(); + + this.ban = ban; + this.actor = actor; + this.reason = reason; + } + +} diff --git a/bungee/src/main/java/me/confuser/banmanager/bungee/listeners/BanListener.java b/bungee/src/main/java/me/confuser/banmanager/bungee/listeners/BanListener.java index d7059c7a..7a696d11 100755 --- a/bungee/src/main/java/me/confuser/banmanager/bungee/listeners/BanListener.java +++ b/bungee/src/main/java/me/confuser/banmanager/bungee/listeners/BanListener.java @@ -1,10 +1,7 @@ package me.confuser.banmanager.bungee.listeners; -import me.confuser.banmanager.bungee.api.events.IpBannedEvent; -import me.confuser.banmanager.bungee.api.events.IpRangeBannedEvent; -import me.confuser.banmanager.bungee.api.events.NameBannedEvent; -import me.confuser.banmanager.bungee.api.events.PlayerBannedEvent; +import me.confuser.banmanager.bungee.api.events.*; import me.confuser.banmanager.common.BanManagerPlugin; import me.confuser.banmanager.common.listeners.CommonBanListener; import net.md_5.bungee.api.plugin.Listener; @@ -24,6 +21,11 @@ public void notifyOnBan(PlayerBannedEvent event) { listener.notifyOnBan(event.getBan(), event.isSilent()); } + @EventHandler(priority = EventPriority.HIGHEST) + public void notifyOnABan(PlayerABannedEvent event) { + listener.notifyOnABan(event.getBan(), event.isSilent()); + } + @EventHandler(priority = EventPriority.HIGHEST) public void notifyOnIpBan(IpBannedEvent event) { listener.notifyOnBan(event.getBan(), event.isSilent()); diff --git a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonBanListener.java b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonBanListener.java index e0e2d758..1bd13d9d 100755 --- a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonBanListener.java +++ b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonBanListener.java @@ -55,6 +55,47 @@ public void notifyOnBan(PlayerBanData data, boolean silent) { } } + public void notifyOnABan(PlayerBanData data, boolean silent) { + String broadcastPermission; + Message message; + + if (data.getExpires() == 0) { + broadcastPermission = "bm.notify.aban"; + message = Message.get("aban.notify"); + } else { + broadcastPermission = "bm.notify.atempban"; + message = Message.get("atempban.notify"); + message.set("expires", DateUtils.getDifferenceFormat(data.getExpires())); + } + + message + .set("id", data.getId()) + .set("player", data.getPlayer().getName()) + .set("playerId", data.getPlayer().getUUID().toString()) + .set("actor", data.getActor().getName()) + .set("reason", data.getReason()); + + if (!silent) { + plugin.getServer().broadcast(message.toString(), broadcastPermission); + } else if (plugin.getPlayerStorage().getConsole().getUUID().equals(data.getActor().getUUID())) { + plugin.getServer().getConsoleSender().sendMessage(message); + return; + } + + // Check if the sender is online and does not have the + // broadcastPermission + CommonPlayer player = plugin.getServer().getPlayer(data.getActor().getUUID()); + + if (player == null || !player.isOnline()) { + return; + } + + if (silent || !player.hasPermission(broadcastPermission)) { + message.sendTo(player); + } + } + + public void notifyOnBan(IpBanData data, boolean silent) { String broadcastPermission; Message message; diff --git a/common/src/main/java/me/confuser/banmanager/common/storage/PlayerABanStorage.java b/common/src/main/java/me/confuser/banmanager/common/storage/PlayerABanStorage.java index f5e7661e..00c4135d 100644 --- a/common/src/main/java/me/confuser/banmanager/common/storage/PlayerABanStorage.java +++ b/common/src/main/java/me/confuser/banmanager/common/storage/PlayerABanStorage.java @@ -180,7 +180,7 @@ public PlayerBanData getBan(UUID uuid) { public void addBan(PlayerBanData ban) { bans.put(ban.getPlayer().getUUID(), ban); - plugin.getServer().callEvent("PlayerBannedEvent", ban, ban.isSilent() || !plugin.getConfig().isBroadcastOnSync()); + plugin.getServer().callEvent("PlayerABannedEvent", ban, ban.isSilent() || !plugin.getConfig().isBroadcastOnSync()); } public void removeBan(PlayerBanData ban) { @@ -202,7 +202,7 @@ public PlayerBanData getBan(String playerName) { } public boolean ban(PlayerBanData ban) throws SQLException { - CommonEvent event = plugin.getServer().callEvent("PlayerBanEvent", ban, ban.isSilent()); + CommonEvent event = plugin.getServer().callEvent("PlayerABanEvent", ban, ban.isSilent()); if (event.isCancelled()) { return false; @@ -211,7 +211,7 @@ public boolean ban(PlayerBanData ban) throws SQLException { create(ban); bans.put(ban.getPlayer().getUUID(), ban); - plugin.getServer().callEvent("PlayerBannedEvent", ban, event.isSilent()); + plugin.getServer().callEvent("PlayerABannedEvent", ban, event.isSilent()); return true; } @@ -225,7 +225,7 @@ public boolean unban(PlayerBanData ban, PlayerData actor, String reason) throws } public boolean unban(PlayerBanData ban, PlayerData actor, String reason, boolean delete) throws SQLException { - CommonEvent event = plugin.getServer().callEvent("PlayerUnbanEvent", ban, actor, reason); + CommonEvent event = plugin.getServer().callEvent("PlayerAUnbanEvent", ban, actor, reason); if (event.isCancelled()) { return false;