diff --git a/src/main/java/world/arainu/core/metaverseplugin/listener/WhitelistCommandListener.java b/src/main/java/world/arainu/core/metaverseplugin/listener/WhitelistCommandListener.java new file mode 100644 index 0000000..60472ea --- /dev/null +++ b/src/main/java/world/arainu/core/metaverseplugin/listener/WhitelistCommandListener.java @@ -0,0 +1,68 @@ +package world.arainu.core.metaverseplugin.listener; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import world.arainu.core.metaverseplugin.utils.ChatUtil; +import world.arainu.core.metaverseplugin.utils.sqlUtil; + +import java.util.List; +import java.util.UUID; + + +/** + * Bukkitに元々あるホワリスのコマンドが実行されたらデータベース側でも処理を行うリスナ= + * + * @author JolTheGreat + */ + +public class WhitelistCommandListener implements Listener { + + /** + * コマンドをサーバー側が検知したときに初めて実行される関数 + * /whitelist remove, /whitelist add と /whitelist list をデータベースから引っ張ってきて実現する + * + * @param event イベント + */ + + @EventHandler + public void onCommandExecute(PlayerCommandPreprocessEvent event) { + String[] args = event.getMessage().split(" "); + String command = args[0]; + Player caller = event.getPlayer(); + + if (command.equals("/whitelist") && args.length == 3) { + String operator = args[1]; + UUID target = Bukkit.getOfflinePlayer(args[2]).getUniqueId(); + + if (!Bukkit.hasWhitelist()) { + ChatUtil.warning(caller, "ホワイトリストはオフになっていますが、データベースに情報を追加します。"); + } + + switch (operator) { + case "add" -> { + sqlUtil.addWhitelist(target); + ChatUtil.success(caller, "データベースにプレイヤーを追加しました。"); + } + + case "remove" -> { + sqlUtil.removeWhitelist(target); + ChatUtil.success(caller, "データベースからプレイヤーを取り除きました。"); + } + + case "list" -> { + ChatUtil.success(caller, "データベース上のホワリスにいるプレイヤーです:"); + List whitelist = sqlUtil.getWhitelist(); + + assert whitelist != null; + for (UUID uuid : whitelist) { + //プレイヤーを表示する際にうるさくならないようにplaysoundをfalseに + ChatUtil.success(caller, uuid.toString() + ", ", false); + } + } + } + } + } +} diff --git a/src/main/java/world/arainu/core/metaverseplugin/listener/WhitelistPlayerJoinListener.java b/src/main/java/world/arainu/core/metaverseplugin/listener/WhitelistPlayerJoinListener.java index dec37ad..42b23ee 100644 --- a/src/main/java/world/arainu/core/metaverseplugin/listener/WhitelistPlayerJoinListener.java +++ b/src/main/java/world/arainu/core/metaverseplugin/listener/WhitelistPlayerJoinListener.java @@ -19,7 +19,6 @@ public class WhitelistPlayerJoinListener implements Listener { /** * プレイヤーの参加を待つリスナー - * * @param e イベント */ @@ -32,4 +31,4 @@ public void onPlayerJoin(PlayerJoinEvent e) { } } } -} +} \ No newline at end of file diff --git a/src/main/java/world/arainu/core/metaverseplugin/utils/sqlUtil.java b/src/main/java/world/arainu/core/metaverseplugin/utils/sqlUtil.java index 3b11173..a7a7761 100644 --- a/src/main/java/world/arainu/core/metaverseplugin/utils/sqlUtil.java +++ b/src/main/java/world/arainu/core/metaverseplugin/utils/sqlUtil.java @@ -207,6 +207,34 @@ public static Integer getkickcount(UUID uuid){ } } + /** + * データベース上のホワリスにプレイヤーを追加する関数 + * + * @param uuid 文字通りUUID + */ + + public static void addWhitelist(UUID uuid) { + try { + create_whitelist_table(); + PreparedStatement ps = conn.prepareStatement("INSERT INTO whitelist (`uuid`) VALUES('" + uuid + "')"); + ps.executeUpdate(); + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public static void removeWhitelist(UUID uuid) { + try { + create_whitelist_table(); + PreparedStatement ps = conn.prepareStatement("DELETE FROM whitelist WHERE uuid LIKE '" + uuid + "'"); + ps.executeUpdate(); + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + /** * ホワリスを取得する関数 * diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index b48eeb3..fcbd110 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -37,4 +37,4 @@ traptower: y: 5 z: -36 discord: - warn_channel: 875995533821505567 + warn_channel: 875995533821505567 \ No newline at end of file