From 422bbcfdf445234a5d107a2db181f9ccf1919204 Mon Sep 17 00:00:00 2001 From: Tomasz Kuraczyk Date: Mon, 16 Mar 2026 21:54:09 +0100 Subject: [PATCH 1/2] Sketch of proper KickPlayerAfterBan system --- build.gradle | 1 + .../java/net/kuraczyk/banhammer/cmds/Ban.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/build.gradle b/build.gradle index 4d36b5c..ac0085b 100644 --- a/build.gradle +++ b/build.gradle @@ -25,6 +25,7 @@ dependencies { implementation 'org.postgresql:postgresql:42.7.7' implementation 'org.flywaydb:flyway-core:10.7.2' implementation 'org.flywaydb:flyway-database-postgresql:10.7.2' + implementation 'com.google.code.gson:gson:2.11.0' } shadowJar { diff --git a/src/main/java/net/kuraczyk/banhammer/cmds/Ban.java b/src/main/java/net/kuraczyk/banhammer/cmds/Ban.java index 7ce7d2e..1e6a8a6 100644 --- a/src/main/java/net/kuraczyk/banhammer/cmds/Ban.java +++ b/src/main/java/net/kuraczyk/banhammer/cmds/Ban.java @@ -17,6 +17,9 @@ import java.util.Objects; import java.util.UUID; import java.util.concurrent.TimeUnit; +import com.google.gson.Gson; + + public class Ban implements CommandExecutor { BanHammer plugin; @@ -309,6 +312,21 @@ public class Ban implements CommandExecutor { } } + private void kickPlayer(PlayerBan b){ + final Gson gson = new Gson(); + try { + Connection conn = plugin.db.getConnection(); + + String preparedJson = gson.toJson(b); + PreparedStatement ps = conn.prepareStatement("SELECT pg_notify('ban_jobs', ?)"); + ps.setString(1, preparedJson); + ps.execute(); + } + catch (SQLException e) { + plugin.getLogger().severe(e.toString()); + } + } + private String resolveBanMessagePlaceholders(String s, String player, String scope, String reason, String operator) { return s.replace("{player}", player) .replace("{scope}", scope) -- 2.51.2 From a7a77b9cc08095bd262212dfe4c4ca9961c30eac Mon Sep 17 00:00:00 2001 From: Tomasz Date: Tue, 17 Mar 2026 17:58:41 +0100 Subject: [PATCH 2/2] sync --- .../java/net/kuraczyk/banhammer/cmds/Ban.java | 16 +++++++++--- .../net/kuraczyk/banhammer/cmds/BanIP.java | 25 +++++++++++++++++++ .../banhammer/workers/BanJobWorker.java | 24 ++++++++++++++++++ 3 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 src/main/java/net/kuraczyk/banhammer/workers/BanJobWorker.java diff --git a/src/main/java/net/kuraczyk/banhammer/cmds/Ban.java b/src/main/java/net/kuraczyk/banhammer/cmds/Ban.java index 1e6a8a6..d8ac176 100644 --- a/src/main/java/net/kuraczyk/banhammer/cmds/Ban.java +++ b/src/main/java/net/kuraczyk/banhammer/cmds/Ban.java @@ -1,7 +1,10 @@ package net.kuraczyk.banhammer.cmds; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import io.papermc.paper.configuration.type.fallback.FallbackValue; import net.kuraczyk.banhammer.BanHammer; +import net.kuraczyk.banhammer.utils.IPBan; import net.kuraczyk.banhammer.utils.PlayerBan; import net.kuraczyk.banhammer.utils.TextUtils; import net.kyori.adventure.text.Component; @@ -312,14 +315,21 @@ public class Ban implements CommandExecutor { } } - private void kickPlayer(PlayerBan b){ + private void createPlayerKickJob(IPBan b, String scope){ final Gson gson = new Gson(); try { Connection conn = plugin.db.getConnection(); - String preparedJson = gson.toJson(b); + JsonElement banObject = gson.toJsonTree(b); + JsonObject wrapper = new JsonObject(); + wrapper.addProperty("ban_type", "player"); + wrapper.addProperty("ban_scope", scope); + + wrapper.add("ban_data", banObject); + String json = gson.toJson(wrapper); + PreparedStatement ps = conn.prepareStatement("SELECT pg_notify('ban_jobs', ?)"); - ps.setString(1, preparedJson); + ps.setString(1, json); ps.execute(); } catch (SQLException e) { diff --git a/src/main/java/net/kuraczyk/banhammer/cmds/BanIP.java b/src/main/java/net/kuraczyk/banhammer/cmds/BanIP.java index 8a6991d..169e3b1 100644 --- a/src/main/java/net/kuraczyk/banhammer/cmds/BanIP.java +++ b/src/main/java/net/kuraczyk/banhammer/cmds/BanIP.java @@ -18,6 +18,10 @@ import java.util.Objects; import java.util.UUID; import java.util.concurrent.TimeUnit; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.Gson; + public class BanIP implements CommandExecutor { BanHammer plugin; @@ -325,6 +329,27 @@ public class BanIP implements CommandExecutor { } } + private void createIPKickJob(IPBan b, String scope){ + final Gson gson = new Gson(); + try { + Connection conn = plugin.db.getConnection(); + + JsonElement banObject = gson.toJsonTree(b); + JsonObject wrapper = new JsonObject(); + wrapper.addProperty("ban_type", "ip"); + wrapper.addProperty("ban_scope", scope); + wrapper.add("ban_data", banObject); + String json = gson.toJson(wrapper); + + PreparedStatement ps = conn.prepareStatement("SELECT pg_notify('ban_jobs', ?)"); + ps.setString(1, json); + ps.execute(); + } + catch (SQLException e) { + plugin.getLogger().severe(e.toString()); + } + } + private String resolveIpBanMessagePlaceholders(String s, String ipAddr, String scope, String reason, String operator) { return s.replace("{ipAddr}", ipAddr) .replace("{scope}", scope) diff --git a/src/main/java/net/kuraczyk/banhammer/workers/BanJobWorker.java b/src/main/java/net/kuraczyk/banhammer/workers/BanJobWorker.java new file mode 100644 index 0000000..48566c0 --- /dev/null +++ b/src/main/java/net/kuraczyk/banhammer/workers/BanJobWorker.java @@ -0,0 +1,24 @@ +package net.kuraczyk.banhammer.workers; + +import net.kuraczyk.banhammer.BanHammer; + +public class BanJobWorker { + + BanHammer plugin; + + public void BanJobWorker(BanHammer p) { + plugin=p; + banJobListener(); + } + + private void banJobListener() { + + } + + private boolean banJobExecutor() { + + } + + + +} -- 2.51.2