diff --git a/CodeAPI/pom.xml b/CodeAPI/pom.xml index b289dc07..ab793372 100644 --- a/CodeAPI/pom.xml +++ b/CodeAPI/pom.xml @@ -70,7 +70,7 @@ org.spigotmc spigot-api - 1.8-R0.1-SNAPSHOT + 1.19-R0.1-SNAPSHOT provided diff --git a/CodeAPI/src/main/java/net/klnetwork/codeapi/CodeAPI.java b/CodeAPI/src/main/java/net/klnetwork/codeapi/CodeAPI.java index 3ec9703d..bf7078bc 100644 --- a/CodeAPI/src/main/java/net/klnetwork/codeapi/CodeAPI.java +++ b/CodeAPI/src/main/java/net/klnetwork/codeapi/CodeAPI.java @@ -38,9 +38,12 @@ public final class CodeAPI extends JavaPlugin implements CodeAPIHook { .start(); @Override - public void onEnable() { + public void onLoad() { INSTANCE = this; + } + @Override + public void onEnable() { saveDefaultConfig(); LocalSQL.getInstance().create(); @@ -56,7 +59,6 @@ public void onDisable() { if (server.isStarted()) { server.shutdown(); } - updateAlert.stop(); LocalSQL.getInstance().drop(); diff --git a/CodeAPI/src/main/java/net/klnetwork/codeapi/table/LocalSQL.java b/CodeAPI/src/main/java/net/klnetwork/codeapi/table/LocalSQL.java index cf3c5557..ecfa0b3f 100644 --- a/CodeAPI/src/main/java/net/klnetwork/codeapi/table/LocalSQL.java +++ b/CodeAPI/src/main/java/net/klnetwork/codeapi/table/LocalSQL.java @@ -2,15 +2,9 @@ import net.klnetwork.codeapi.CodeAPI; import net.klnetwork.playerrolechecker.api.data.common.TemporaryTable; -import net.klnetwork.playerrolechecker.api.data.common.TemporaryData; -import net.klnetwork.playerrolechecker.api.utils.CommonUtils; import org.bukkit.plugin.Plugin; -import java.sql.*; -import java.util.UUID; - public class LocalSQL extends TemporaryTable { - private static TemporaryTable table; public static TemporaryTable getInstance() { @@ -25,177 +19,6 @@ public static void setInstance(TemporaryTable data) { table = data; } - @Override - public boolean hasUUID(Integer code) { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("select * from waitverify where code = ?"); - statement.setInt(1, code); - - ResultSet resultSet = statement.executeQuery(); - - return resultSet.next(); - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return false; - } - - @Override - public TemporaryData getUUID(Integer code) { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("select * from waitverify where code = ?"); - statement.setInt(1, code); - - ResultSet resultSet = statement.executeQuery(); - - if (resultSet.next()) { - return new TemporaryData(resultSet.getString(1), resultSet.getInt(2), resultSet.getBoolean(3)); - } - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return null; - } - - @Override - @Deprecated - public String[] getUUID(String code) { - String[] result = null; - try { - PreparedStatement preparedStatement = getConnection().prepareStatement("select * from waitverify where code = ?"); - preparedStatement.setString(1, code); - - ResultSet resultSet = preparedStatement.executeQuery(); - if (resultSet.next()) { - result = new String[]{resultSet.getString(1), resultSet.getString(2), String.valueOf(resultSet.getBoolean(3))}; - } - } catch (SQLException throwables) { - throwables.printStackTrace(); - } - return result; - } - - @Override - public TemporaryData getCode(UUID uuid) { - return getCode(uuid.toString()); - } - - @Override - public TemporaryData getCode(String uuid) { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("select * from waitverify where uuid = ?"); - statement.setString(1, uuid); - - ResultSet resultSet = statement.executeQuery(); - - if (resultSet.next()) { - return new TemporaryData(resultSet.getString(1), resultSet.getInt(2), resultSet.getBoolean(3)); - } - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return null; - } - - @Override - public void put(String uuid, String code, boolean bedrock) { - put(uuid, Integer.parseInt(code), bedrock); - } - - @Override - public void put(UUID uuid, Integer code, boolean bedrock) { - put(uuid.toString(), code, bedrock); - } - - @Override - public void put(UUID uuid, String code, boolean bedrock) { - put(uuid.toString(), Integer.parseInt(code), bedrock); - } - - @Override - public void put(String uuid, Integer code, boolean bedrock) { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("insert into waitverify values (?,?,?)"); - statement.setString(1, uuid); - statement.setInt(2, code); - statement.setBoolean(3, bedrock); - statement.execute(); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - } - - @Override - public void remove(UUID uuid, Integer code) { - remove(uuid.toString(), code); - } - - @Override - public void remove(String uuid, Integer code) { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("delete from waitverify where uuid = ? and code = ?"); - statement.setString(1, uuid); - statement.setInt(2, code); - statement.execute(); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - } - - @Override - public void drop() { - Statement statement = null; - try { - statement = getConnection().createStatement(); - - statement.executeUpdate("drop table if exists waitverify"); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - } - - @Override - public void create() { - Statement statement = null; - try { - drop(); - - statement = getConnection().createStatement(); - statement.executeUpdate("create table if not exists waitverify (uuid string, code int, bedrock boolean)"); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - } - - @Override - public Connection getConnection() throws SQLException { - if (connection == null || connection.isClosed() || isConnectionDead()) { - checkClass(); - - this.connection = CommonUtils.createConnection(getSQLFormat(), getUser(), getPassword()); - } - return connection; - } - @Override public Plugin getPlugin() { return CodeAPI.INSTANCE; diff --git a/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/PlayerRoleChecker.java b/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/PlayerRoleChecker.java index ed35417c..a96a6871 100644 --- a/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/PlayerRoleChecker.java +++ b/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/PlayerRoleChecker.java @@ -45,9 +45,12 @@ public final class PlayerRoleChecker extends JavaPlugin implements CheckerAPIHoo .start(); @Override - public void onEnable() { + public void onLoad() { INSTANCE = this; + } + @Override + public void onEnable() { saveDefaultConfig(); PlayerDataSQL.getInstance().create(); @@ -70,7 +73,6 @@ public void onDisable() { if (JDA.INSTANCE != null) { JDA.INSTANCE.shutdown(); } - updateAlert.stop(); LocalSQL.getInstance().drop(); diff --git a/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/api/ConfigValue.java b/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/api/ConfigValue.java index 74b5bbc4..ef32e4de 100644 --- a/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/api/ConfigValue.java +++ b/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/api/ConfigValue.java @@ -65,18 +65,22 @@ public void setVerifiedPlayerIgnore(boolean verifiedPlayerIgnore) { this.verifiedPlayerIgnore = verifiedPlayerIgnore; } + @Override public boolean canRegisterUnlimitedAccount() { return canRegisterUnlimitedAccount; } + @Override public void setCanRegisterUnlimitedAccount(boolean canRegisterUnlimitedAccount) { this.canRegisterUnlimitedAccount = canRegisterUnlimitedAccount; } + @Override public int getAccountPerDiscord() { return accountPerDiscord; } + @Override public void setAccountPerDiscord(int accountPerDiscord) { this.accountPerDiscord = accountPerDiscord; } diff --git a/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/jda/command/ForceJoinCommand.java b/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/jda/command/ForceJoinCommand.java index 5cb3db43..5a44388c 100644 --- a/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/jda/command/ForceJoinCommand.java +++ b/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/jda/command/ForceJoinCommand.java @@ -20,7 +20,6 @@ public ForceJoinCommand(Plugin plugin) { @Override public String getCommandName() { - //todo: customizable! return "!forcejoin"; } diff --git a/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/table/LocalSQL.java b/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/table/LocalSQL.java index b05e6a11..2c8fba46 100644 --- a/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/table/LocalSQL.java +++ b/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/table/LocalSQL.java @@ -2,15 +2,9 @@ import net.klnetwork.playerrolechecker.PlayerRoleChecker; import net.klnetwork.playerrolechecker.api.data.common.TemporaryTable; -import net.klnetwork.playerrolechecker.api.data.common.TemporaryData; -import net.klnetwork.playerrolechecker.api.utils.CommonUtils; import org.bukkit.plugin.Plugin; -import java.sql.*; -import java.util.UUID; - public class LocalSQL extends TemporaryTable { - private static TemporaryTable table; public static TemporaryTable getInstance() { @@ -25,177 +19,6 @@ public static void setInstance(TemporaryTable data) { table = data; } - @Override - public boolean hasUUID(Integer code) { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("select * from waitverify where code = ?"); - statement.setInt(1, code); - - ResultSet resultSet = statement.executeQuery(); - - return resultSet.next(); - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return false; - } - - @Override - public TemporaryData getUUID(Integer code) { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("select * from waitverify where code = ?"); - statement.setInt(1, code); - - ResultSet resultSet = statement.executeQuery(); - - if (resultSet.next()) { - return new TemporaryData(resultSet.getString(1), resultSet.getInt(2), resultSet.getBoolean(3)); - } - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return null; - } - - @Override - @Deprecated - public String[] getUUID(String code) { - String[] result = null; - try { - PreparedStatement preparedStatement = getConnection().prepareStatement("select * from waitverify where code = ?"); - preparedStatement.setString(1, code); - - ResultSet resultSet = preparedStatement.executeQuery(); - if (resultSet.next()) { - result = new String[]{resultSet.getString(1), resultSet.getString(2), String.valueOf(resultSet.getBoolean(3))}; - } - } catch (SQLException e) { - e.printStackTrace(); - } - return result; - } - - @Override - public TemporaryData getCode(UUID uuid) { - return getCode(uuid.toString()); - } - - @Override - public TemporaryData getCode(String uuid) { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("select * from waitverify where uuid = ?"); - statement.setString(1, uuid); - - ResultSet resultSet = statement.executeQuery(); - - if (resultSet.next()) { - return new TemporaryData(resultSet.getString(1), resultSet.getInt(2), resultSet.getBoolean(3)); - } - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return null; - } - - @Override - public void put(String uuid, String code, boolean bedrock) { - put(uuid, Integer.parseInt(code), bedrock); - } - - @Override - public void put(UUID uuid, Integer code, boolean bedrock) { - put(uuid.toString(), code, bedrock); - } - - @Override - public void put(UUID uuid, String code, boolean bedrock) { - put(uuid.toString(), Integer.parseInt(code), bedrock); - } - - @Override - public void put(String uuid, Integer code, boolean bedrock) { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("insert into waitverify values (?,?,?)"); - statement.setString(1, uuid); - statement.setInt(2, code); - statement.setBoolean(3, bedrock); - statement.execute(); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - } - - @Override - public void remove(UUID uuid, Integer code) { - remove(uuid.toString(), code); - } - - @Override - public void remove(String uuid, Integer code) { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("delete from waitverify where uuid = ? and code = ?"); - statement.setString(1, uuid); - statement.setInt(2, code); - statement.execute(); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - } - - @Override - public void drop() { - Statement statement = null; - try { - statement = getConnection().createStatement(); - - statement.executeUpdate("drop table if exists waitverify"); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - } - - @Override - public void create() { - Statement statement = null; - try { - drop(); - - statement = getConnection().createStatement(); - statement.executeUpdate("create table if not exists waitverify (uuid string, code int, bedrock boolean)"); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - } - - @Override - public Connection getConnection() throws SQLException { - if (connection == null || connection.isClosed() || isConnectionDead()) { - checkClass(); - - this.connection = CommonUtils.createConnection(getSQLFormat(), getUser(), getPassword()); - } - return connection; - } - @Override public Plugin getPlugin() { return PlayerRoleChecker.INSTANCE; diff --git a/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/table/PlayerDataSQL.java b/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/table/PlayerDataSQL.java index aaa72a82..cd0a8d26 100644 --- a/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/table/PlayerDataSQL.java +++ b/PlayerRoleChecker/src/main/java/net/klnetwork/playerrolechecker/table/PlayerDataSQL.java @@ -1,19 +1,10 @@ package net.klnetwork.playerrolechecker.table; -import net.dv8tion.jda.internal.utils.tuple.Pair; import net.klnetwork.playerrolechecker.PlayerRoleChecker; import net.klnetwork.playerrolechecker.api.data.PlayerDataTable; -import net.klnetwork.playerrolechecker.api.data.common.PlayerData; -import net.klnetwork.playerrolechecker.api.utils.CommonUtils; -import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; -import java.sql.*; -import java.util.UUID; -import java.util.function.Consumer; - public class PlayerDataSQL extends PlayerDataTable { - private static PlayerDataTable table; public static PlayerDataTable getInstance() { @@ -28,231 +19,6 @@ public static void setInstance(PlayerDataTable data) { table = data; } - @Override - public void asyncDiscordId(UUID uuid, Consumer discordId) { - asyncDiscordId(uuid.toString(), discordId); - } - - @Override - public void asyncDiscordId(String uuid, Consumer discordId) { - Bukkit.getScheduler().runTaskAsynchronously(PlayerRoleChecker.INSTANCE, () -> discordId.accept(getDiscordId(uuid))); - } - - @Override - public void asyncDiscordId(UUID uuid, boolean bedrock, Consumer discordId) { - asyncDiscordId(uuid.toString(), bedrock, discordId); - } - - @Override - public void asyncDiscordId(String uuid, boolean bedrock, Consumer discordId) { - Bukkit.getScheduler().runTaskAsynchronously(PlayerRoleChecker.INSTANCE, () -> discordId.accept(getDiscordId(uuid, bedrock))); - } - - @Override - public void asyncUUID(String discordId, Consumer uuid) { - Bukkit.getScheduler().runTaskAsynchronously(PlayerRoleChecker.INSTANCE, () -> uuid.accept(getUUID(discordId))); - } - - @Override - public PlayerData getDiscordId(UUID uuid) { - return getDiscordId(uuid.toString()); - } - - @Override - public PlayerData getDiscordId(String uuid) { - PreparedStatement statement = null; - - try { - statement = getConnection().prepareStatement("select * from verifyplayer where uuid = ?"); - statement.setString(1, uuid); - - ResultSet resultSet = statement.executeQuery(); - - if (resultSet.next()) { - return new PlayerData(resultSet.getString(1), resultSet.getString(2), resultSet.getBoolean(3)); - } - - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return null; - } - - @Override - public PlayerData getDiscordId(UUID uuid, boolean bedrock) { - return getDiscordId(uuid.toString(), bedrock); - } - - @Override - public PlayerData getDiscordId(String uuid, boolean bedrock) { - PreparedStatement statement = null; - - try { - statement = getConnection().prepareStatement("select * from verifyplayer where uuid = ? and bedrock = ?"); - statement.setString(1, uuid); - statement.setBoolean(2, bedrock); - - ResultSet resultSet = statement.executeQuery(); - - if (resultSet.next()) { - return new PlayerData(resultSet.getString(1), resultSet.getString(2), resultSet.getBoolean(3)); - } - - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return null; - } - - @Override - public boolean hasData(UUID uuid, boolean bedrock) { - return hasData(uuid.toString(), bedrock); - } - - @Override - public boolean hasData(String uuid, boolean bedrock) { - PreparedStatement statement = null; - - try { - statement = getConnection().prepareStatement("select * from verifyplayer where uuid = ? and bedrock = ?"); - statement.setString(1, uuid); - statement.setBoolean(2, bedrock); - - return statement.executeQuery().next(); - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return false; - } - - @Override - public PlayerData getUUID(String discordId) { - PreparedStatement statement = null; - - try { - statement = getConnection().prepareStatement("select * from verifyplayer where discord = ?"); - statement.setString(1, discordId); - - ResultSet resultSet = statement.executeQuery(); - - if (resultSet.next()) { - return new PlayerData(resultSet.getString(1), resultSet.getString(2), resultSet.getBoolean(3)); - } - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return null; - } - - @Override - public void put(UUID uuid, String discordId, boolean bedrock) { - put(uuid.toString(), discordId, bedrock); - } - - @Override - public void put(String uuid, String discordId, boolean bedrock) { - Bukkit.getScheduler().runTaskAsynchronously(PlayerRoleChecker.INSTANCE, () -> { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("insert into verifyplayer values (?,?,?)"); - statement.setString(1, uuid); - statement.setString(2, discordId); - statement.setBoolean(3, bedrock); - statement.execute(); - } catch (SQLException throwables) { - throwables.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - }); - } - - @Override - public void remove(UUID uuid, String discordId) { - remove(uuid.toString(), discordId); - } - - @Override - public void remove(String uuid, String discordId) { - Bukkit.getScheduler().runTaskAsynchronously(PlayerRoleChecker.INSTANCE, () -> { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("delete from verifyplayer where uuid = ? and discord = ?"); - statement.setString(1, uuid); - statement.setString(2, discordId); - statement.execute(); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - }); - } - - @Override - public Pair getSize(String discordId) { - PreparedStatement statement = null; - - try { - statement = getConnection().prepareStatement("SELECT count(*), uuid, bedrock from verifyplayer where discord = ?"); - statement.setString(1, discordId); - - ResultSet resultSet = statement.executeQuery(); - - if (resultSet.next()) { - final int size = resultSet.getInt(1); - - if (size != 0) { - return Pair.of(size, new PlayerData(resultSet.getString(2), discordId, resultSet.getBoolean(3))); - } else { - return pair; - } - } - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - - return pair; - } - - @Override - public void create() { - Bukkit.getScheduler().runTaskAsynchronously(PlayerRoleChecker.INSTANCE, () -> { - Statement statement = null; - try { - alter(); - - statement = PlayerDataSQL.getInstance().getConnection().createStatement(); - - statement.executeUpdate("create table if not exists verifyplayer (uuid VARCHAR(50), discord VARCHAR(50), bedrock BOOLEAN)"); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - }); - } - - @Override - public Connection getConnection() throws SQLException { - if (connection == null || connection.isClosed() || isConnectionDead()) { - checkClass(); - - this.connection = CommonUtils.createConnection(getSQLFormat(), getUser(), getPassword()); - } - return connection; - } - @Override public Plugin getPlugin() { return PlayerRoleChecker.INSTANCE; diff --git a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/PlayerRoleCheckerAPI.java b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/PlayerRoleCheckerAPI.java index 997908e2..b68728b8 100644 --- a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/PlayerRoleCheckerAPI.java +++ b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/PlayerRoleCheckerAPI.java @@ -7,21 +7,41 @@ import net.klnetwork.playerrolechecker.api.enums.HookedAPIType; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.PluginManager; import java.util.*; +/** + * プレイヤーロールチェッカーのインスタンス的な存在です + * @implNote + *
  • APIに侵入したい場合は {@link PluginManager#getPlugin(String)}でプラグインを取得し、{@link CodeAPIHook} にキャストしてください + *
  • APIを上書きしたい場合は {@link CodeAPIHook} を拡張してください + * + * @see CodeAPIHook + * @since 4.0 + */ public class PlayerRoleCheckerAPI { private static final Map pairs = new HashMap<>(); + /** + * @return ConnectorのAPIに接続できているか + * + * @implNote + *
  • このメソッドは他のプラグインが返される可能性があります + *
  • 複数のAPIに接続できた場合は最後に見つかったAPIが返されます + * + * @see #getHookedAPIType() + */ public static boolean isHookedConnector() { return getHookedAPIType().contains(HookedAPIType.CONNECTOR); } /** + * @return {@link ConnectorAPIHook} + * * @implNote - *
    注意: - *
    ※1 このメソッドは他のプラグインが返される可能性があります - *
    ※2 複数のAPIに接続できた場合は最後に見つかったAPIが返されます + *
  • このメソッドは他のプラグインが返される可能性があります + *
  • 複数のAPIに接続できた場合は最後に見つかったAPIが返されます */ public static ConnectorAPIHook getConnectorAPI() { if (!pairs.containsKey(HookedAPIType.CONNECTOR) && !isHookedConnector()) { @@ -31,19 +51,33 @@ public static ConnectorAPIHook getConnectorAPI() { return (ConnectorAPIHook) pairs.get(HookedAPIType.CONNECTOR); } + /** + * @return {@link ConnectorAPIHook} コネクターのAPIを返します + * + * @see ConnectorAPIHook + * @see org.bukkit.plugin.PluginManager#getPlugin(String) + */ public static ConnectorAPIHook getConnector() { return (ConnectorAPIHook) Bukkit.getPluginManager().getPlugin("PlayerRoleCheckerConnector"); } + /** + * @return CheckerのAPIに接続されているか + * + * @implNote + *
  • このメソッドは他のプラグインが返される可能性があります + *
  • 複数のAPIに接続できた場合は最後に見つかったAPIが返されます + * + * @see #getHookedAPIType() + */ public static boolean isHookedChecker() { return getHookedAPIType().contains(HookedAPIType.CHECKER); } /** * @implNote - *
    注意: - *
    ※1 このメソッドは他のプラグインが返される可能性があります - *
    ※2 複数のAPIに接続できた場合は最後に見つかったAPIが返されます + *
  • このメソッドは他のプラグインが返される可能性があります + *
  • 複数のAPIに接続できた場合は最後に見つかったAPIが返されます */ public static CheckerAPIHook getCheckerAPI() { if (!pairs.containsKey(HookedAPIType.CHECKER) && !isHookedChecker()) { @@ -53,6 +87,14 @@ public static CheckerAPIHook getCheckerAPI() { return (CheckerAPIHook) pairs.get(HookedAPIType.CHECKER); } + /** + * @return {@link CheckerAPIHook} チェッカーのAPIを返します + * + * @implNote + * + * @see ConnectorAPIHook + * @see org.bukkit.plugin.PluginManager#getPlugin(String) + */ public static CheckerAPIHook getChecker() { return (CheckerAPIHook) Bukkit.getPluginManager().getPlugin("PlayerRoleChecker"); } @@ -61,9 +103,8 @@ public static CheckerAPIHook getChecker() { * @return CodeAPIのAPIに接続されているか * * @implNote - *
    注意: - *
    ※1 このメソッドは他のプラグインが返される可能性があります - *
    ※2 複数のAPIに接続できた場合は最後に見つかったAPIが返されます + *
  • このメソッドは他のプラグインが返される可能性があります + *
  • 複数のAPIに接続できた場合は最後に見つかったAPIが返されます * * @see #getHookedAPIType() */ @@ -75,9 +116,8 @@ public static boolean isHookedCodeAPI() { * @return {@link CodeAPIHook} * * @implNote - *
    注意: - *
    ※1 このメソッドは他のプラグインが返される可能性があります - *
    ※2 複数のAPIに接続できた場合は最後に見つかったAPIが返されます + *
  • このメソッドは他のプラグインが返される可能性があります + *
  • 複数のAPIに接続できた場合は最後に見つかったAPIが返されま * * @see CodeAPIHook * @see #isHookedCodeAPI() @@ -91,6 +131,12 @@ public static CodeAPIHook getCodeAPI() { return (CodeAPIHook) pairs.get(HookedAPIType.CODEAPI); } + /** + * @return 現在接続可能なAPIを {@link List} で提供します + * + * @implNote + *
  • キャッシュがされていない場合 {@link #init()} を実行します + */ public static List getHookedAPIType() { if (pairs.isEmpty()) { init(); @@ -99,10 +145,32 @@ public static List getHookedAPIType() { return new ArrayList<>(getAPIType()); } - private static Set getAPIType() { + /** + * @return 現在接続可能なAPIを {@link Set} で提供します + * + * @implNote + *
  • このメソッドは {@link #init()} を実行していない場合必ず空の {@link Set} で返されます + */ + public static Set getAPIType() { return pairs.keySet(); } + /** + * @return 使用可能なAPIを返します + * + * @implNote + *
  • このメソッドは {@link #init()} を実行していない場合必ず空の {@link HashMap} が返されます + */ + public static Map getPairs() { + return pairs; + } + + /** + * 使用できるAPIを取得します + * + * @implNote + *
  • このメソッドが使われた場合 {@link #getPairs()} にキャッシュされます + */ public static void init() { pairs.clear(); diff --git a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/APIHook.java b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/APIHook.java index 5b0f9250..6cdf7de1 100644 --- a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/APIHook.java +++ b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/APIHook.java @@ -16,8 +16,19 @@ public interface APIHook { */ Metrics getMetrics(); + /** + * @return プレイヤーが参加したときに実行される + * + *
    詳細については -> w + */ JoinManager getJoinManager(); + /** + * @return プレイヤーロールチェッカーに搭載されているアップデートアラート + * + * @implNote + *
  • 現在はプレイヤーロールチェッカー内のプラグインしか機能しません + */ UpdateAlert getUpdateAlert(); /** diff --git a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/APIHookCustom.java b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/APIHookCustom.java index e87be050..9c5b2116 100644 --- a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/APIHookCustom.java +++ b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/APIHookCustom.java @@ -4,8 +4,23 @@ import net.klnetwork.playerrolechecker.api.discord.CommandManager; public interface APIHookCustom extends APIHook { + /** + * @return Discordのコマンドのインスタンスを返します + * + * @implNote + *
    Discordのコマンドのインスタンスを返します + *
    自分のコマンドを登録することやコマンドを削除することが可能 + * + * @see CommandManager + */ CommandManager getCommandManager(); + /** + * @return Java Discord API のインスタンスを返します + * + * @see Java Discord API + * @see JDA + */ JDA getJDA(); PlayerDataTable getPlayerData(); diff --git a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/PlayerDataTable.java b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/PlayerDataTable.java index 693ab73d..41104235 100644 --- a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/PlayerDataTable.java +++ b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/PlayerDataTable.java @@ -3,48 +3,215 @@ import net.dv8tion.jda.internal.utils.tuple.Pair; import net.klnetwork.playerrolechecker.api.data.common.PlayerData; import net.klnetwork.playerrolechecker.api.utils.CommonUtils; +import org.bukkit.Bukkit; -import java.sql.SQLException; -import java.sql.Statement; +import java.sql.*; import java.util.UUID; import java.util.function.Consumer; public abstract class PlayerDataTable extends SQLInterface { protected Pair pair = Pair.of(0, null); - public abstract void asyncDiscordId(UUID uuid, Consumer discordId); + public void asyncDiscordId(UUID uuid, Consumer discordId) { + asyncDiscordId(uuid.toString(), discordId); + } + + public void asyncDiscordId(String uuid, Consumer discordId) { + Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), () -> discordId.accept(getDiscordId(uuid))); + } + + public void asyncDiscordId(UUID uuid, boolean bedrock, Consumer discordId) { + asyncDiscordId(uuid.toString(), bedrock, discordId); + } + + public void asyncDiscordId(String uuid, boolean bedrock, Consumer discordId) { + Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), () -> discordId.accept(getDiscordId(uuid, bedrock))); + } + + public void asyncUUID(String discordId, Consumer uuid) { + Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), () -> uuid.accept(getUUID(discordId))); + } + + public PlayerData getDiscordId(UUID uuid) { + return getDiscordId(uuid.toString()); + } - public abstract void asyncDiscordId(String uuid, Consumer discordId); + public PlayerData getDiscordId(String uuid) { + PreparedStatement statement = null; - public abstract void asyncDiscordId(UUID uuid, boolean bedrock, Consumer discordId); + try { + statement = getConnection().prepareStatement("select * from verifyplayer where uuid = ?"); + statement.setString(1, uuid); - public abstract void asyncDiscordId(String uuid, boolean bedrock, Consumer discordId); + ResultSet resultSet = statement.executeQuery(); - public abstract void asyncUUID(String discordId, Consumer uuid); + if (resultSet.next()) { + return new PlayerData(resultSet.getString(1), resultSet.getString(2), resultSet.getBoolean(3)); + } + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + return null; + } - public abstract PlayerData getDiscordId(UUID uuid); + public PlayerData getDiscordId(UUID uuid, boolean bedrock) { + return getDiscordId(uuid.toString(), bedrock); + } - public abstract PlayerData getDiscordId(String uuid); + public PlayerData getDiscordId(String uuid, boolean bedrock) { + PreparedStatement statement = null; - public abstract PlayerData getDiscordId(UUID uuid, boolean bedrock); + try { + statement = getConnection().prepareStatement("select * from verifyplayer where uuid = ? and bedrock = ?"); + statement.setString(1, uuid); + statement.setBoolean(2, bedrock); - public abstract PlayerData getDiscordId(String uuid, boolean bedrock); + ResultSet resultSet = statement.executeQuery(); - public abstract boolean hasData(UUID uuid, boolean bedrock); + if (resultSet.next()) { + return new PlayerData(resultSet.getString(1), resultSet.getString(2), resultSet.getBoolean(3)); + } + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + return null; + } - public abstract boolean hasData(String uuid, boolean bedrock); + public boolean hasData(UUID uuid, boolean bedrock) { + return hasData(uuid.toString(), bedrock); + } - public abstract PlayerData getUUID(String discordId); + public boolean hasData(String uuid, boolean bedrock) { + PreparedStatement statement = null; - public abstract void put(UUID uuid, String discordId, boolean bedrock); + try { + statement = getConnection().prepareStatement("select * from verifyplayer where uuid = ? and bedrock = ?"); + statement.setString(1, uuid); + statement.setBoolean(2, bedrock); - public abstract void put(String uuid, String discordId, boolean bedrock); + return statement.executeQuery().next(); + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + return false; + } - public abstract void remove(UUID uuid, String discordId); + public PlayerData getUUID(String discordId) { + PreparedStatement statement = null; - public abstract void remove(String uuid, String discordId); + try { + statement = getConnection().prepareStatement("select * from verifyplayer where discord = ?"); + statement.setString(1, discordId); - public abstract Pair getSize(String discordId); + ResultSet resultSet = statement.executeQuery(); + + if (resultSet.next()) { + return new PlayerData(resultSet.getString(1), resultSet.getString(2), resultSet.getBoolean(3)); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + return null; + } + + public void put(UUID uuid, String discordId, boolean bedrock) { + put(uuid.toString(), discordId, bedrock); + } + + public void put(String uuid, String discordId, boolean bedrock) { + Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), () -> { + PreparedStatement statement = null; + try { + statement = getConnection().prepareStatement("insert into verifyplayer values (?,?,?)"); + statement.setString(1, uuid); + statement.setString(2, discordId); + statement.setBoolean(3, bedrock); + statement.execute(); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + }); + } + + public void remove(UUID uuid, String discordId) { + remove(uuid.toString(), discordId); + } + + public void remove(String uuid, String discordId) { + Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), () -> { + PreparedStatement statement = null; + try { + statement = getConnection().prepareStatement("delete from verifyplayer where uuid = ? and discord = ?"); + statement.setString(1, uuid); + statement.setString(2, discordId); + statement.execute(); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + }); + } + + public Pair getSize(String discordId) { + PreparedStatement statement = null; + + try { + statement = getConnection().prepareStatement("SELECT count(*), uuid, bedrock from verifyplayer where discord = ?"); + statement.setString(1, discordId); + + ResultSet resultSet = statement.executeQuery(); + + if (resultSet.next()) { + final int size = resultSet.getInt(1); + + return size != 0 ? Pair.of(size, new PlayerData(resultSet.getString(2), discordId, resultSet.getBoolean(3))) : pair; + } + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + + return pair; + } + + public void create() { + Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), () -> { + Statement statement = null; + try { + alter(); + + statement = getConnection().createStatement(); + + statement.executeUpdate("create table if not exists verifyplayer (uuid VARCHAR(50), discord VARCHAR(50), bedrock BOOLEAN)"); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + }); + } + + @Override + public Connection getConnection() throws SQLException { + if (connection == null || connection.isClosed() || isConnectionDead()) { + checkClass(); + + this.connection = CommonUtils.createConnection(getSQLFormat(), getUser(), getPassword()); + } + return connection; + } public void alter() { Statement statement = null; diff --git a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/checker/CheckerConfigManager.java b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/checker/CheckerConfigManager.java index 8dbce808..4a7d8002 100644 --- a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/checker/CheckerConfigManager.java +++ b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/checker/CheckerConfigManager.java @@ -3,6 +3,9 @@ public interface CheckerConfigManager { int getDeleteSecond(); + /** + * @param deleteSecond 削除時間を上書きします + */ void setDeleteSecond(int deleteSecond); int getMax(); @@ -16,4 +19,15 @@ public interface CheckerConfigManager { boolean isVerifiedPlayerIgnore(); void setVerifiedPlayerIgnore(boolean verifiedPlayerIgnore); -} + + boolean canRegisterUnlimitedAccount(); + + void setCanRegisterUnlimitedAccount(boolean canRegisterUnlimitedAccount); + + int getAccountPerDiscord(); + + /** + * @param accountPerDiscord Discordアカウントごとに最大登録数を制御します + */ + void setAccountPerDiscord(int accountPerDiscord); +} \ No newline at end of file diff --git a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/codeapi/CodeAPICanRegister.java b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/codeapi/CodeAPICanRegister.java index 79c088d1..2c80aec8 100644 --- a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/codeapi/CodeAPICanRegister.java +++ b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/codeapi/CodeAPICanRegister.java @@ -4,4 +4,4 @@ public interface CodeAPICanRegister { boolean canRegister(Plugin plugin); -} +} \ No newline at end of file diff --git a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/codeapi/CodeAPIConfigManager.java b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/codeapi/CodeAPIConfigManager.java index f36c8ed1..2f97a405 100644 --- a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/codeapi/CodeAPIConfigManager.java +++ b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/codeapi/CodeAPIConfigManager.java @@ -1,15 +1,33 @@ package net.klnetwork.playerrolechecker.api.data.codeapi; public interface CodeAPIConfigManager { + /** + * @return コードが生成される最小値 + */ int getMin(); + /** + * @param min 最小値 + */ void setMin(int min); + /** + * @return コードが生成される最大値 + */ int getMax(); + /** + * @param max 最大値 + */ void setMax(int max); + /** + * @return 一時的なテーブルから削除される時間 + */ int getDeleteSecond(); + /** + * @param deleteSecond 一時的なテーブルから削除する時間 + */ void setDeleteSecond(int deleteSecond); } \ No newline at end of file diff --git a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/common/TemporaryTable.java b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/common/TemporaryTable.java index 68b9a8f5..9f6e4cbf 100644 --- a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/common/TemporaryTable.java +++ b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/common/TemporaryTable.java @@ -1,34 +1,168 @@ package net.klnetwork.playerrolechecker.api.data.common; import net.klnetwork.playerrolechecker.api.data.SQLInterface; +import net.klnetwork.playerrolechecker.api.utils.CommonUtils; +import java.sql.*; import java.util.UUID; public abstract class TemporaryTable extends SQLInterface { - public abstract boolean hasUUID(Integer code); + public boolean hasUUID(Integer code) { + PreparedStatement statement = null; + try { + statement = getConnection().prepareStatement("select * from waitverify where code = ?"); + statement.setInt(1, code); - public abstract TemporaryData getUUID(Integer code); + ResultSet resultSet = statement.executeQuery(); + + return resultSet.next(); + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + return false; + } + + public TemporaryData getUUID(Integer code) { + PreparedStatement statement = null; + try { + statement = getConnection().prepareStatement("select * from waitverify where code = ?"); + statement.setInt(1, code); + + ResultSet resultSet = statement.executeQuery(); + + if (resultSet.next()) { + return new TemporaryData(resultSet.getString(1), resultSet.getInt(2), resultSet.getBoolean(3)); + } + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + return null; + } @Deprecated - public abstract String[] getUUID(String code); + public String[] getUUID(String code) { + String[] result = null; + try { + PreparedStatement preparedStatement = getConnection().prepareStatement("select * from waitverify where code = ?"); + preparedStatement.setString(1, code); + + ResultSet resultSet = preparedStatement.executeQuery(); + if (resultSet.next()) { + result = new String[]{resultSet.getString(1), resultSet.getString(2), String.valueOf(resultSet.getBoolean(3))}; + } + } catch (SQLException e) { + e.printStackTrace(); + } + return result; + } + + public TemporaryData getCode(UUID uuid) { + return getCode(uuid.toString()); + } + + public TemporaryData getCode(String uuid) { + PreparedStatement statement = null; + try { + statement = getConnection().prepareStatement("select * from waitverify where uuid = ?"); + statement.setString(1, uuid); + + ResultSet resultSet = statement.executeQuery(); + + if (resultSet.next()) { + return new TemporaryData(resultSet.getString(1), resultSet.getInt(2), resultSet.getBoolean(3)); + } + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + return null; + } + + public void put(String uuid, String code, boolean bedrock) { + put(uuid, Integer.parseInt(code), bedrock); + } + + public void put(UUID uuid, Integer code, boolean bedrock) { + put(uuid.toString(), code, bedrock); + } - public abstract TemporaryData getCode(UUID uuid); + public void put(UUID uuid, String code, boolean bedrock) { + put(uuid.toString(), Integer.parseInt(code), bedrock); + } - public abstract TemporaryData getCode(String uuid); + public void put(String uuid, Integer code, boolean bedrock) { + PreparedStatement statement = null; + try { + statement = getConnection().prepareStatement("insert into waitverify values (?,?,?)"); + statement.setString(1, uuid); + statement.setInt(2, code); + statement.setBoolean(3, bedrock); + statement.execute(); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + } - public abstract void put(UUID uuid, String code, boolean bedrock); + public void remove(UUID uuid, Integer code) { + remove(uuid.toString(), code); + } - public abstract void put(UUID uuid, Integer code, boolean bedrock); + public void remove(String uuid, Integer code) { + PreparedStatement statement = null; + try { + statement = getConnection().prepareStatement("delete from waitverify where uuid = ? and code = ?"); + statement.setString(1, uuid); + statement.setInt(2, code); + statement.execute(); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + } - public abstract void put(String uuid, String code, boolean bedrock); + public void drop() { + Statement statement = null; + try { + statement = getConnection().createStatement(); - public abstract void put(String uuid, Integer code, boolean bedrock); + statement.executeUpdate("drop table if exists waitverify"); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + } - public abstract void remove(UUID uuid, Integer code); + @Override + public void create() { + Statement statement = null; + try { + drop(); - public abstract void remove(String uuid, Integer code); + statement = getConnection().createStatement(); + statement.executeUpdate("create table if not exists waitverify (uuid string, code int, bedrock boolean)"); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + CommonUtils.close(statement); + } + } - public abstract void drop(); + @Override + public Connection getConnection() throws SQLException { + if (connection == null || connection.isClosed() || isConnectionDead()) { + checkClass(); - public abstract void create(); + this.connection = CommonUtils.createConnection(getSQLFormat(), getUser(), getPassword()); + } + return connection; + } } diff --git a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/connector/ConnectorAPIHook.java b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/connector/ConnectorAPIHook.java index ec045fe5..8797b465 100644 --- a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/connector/ConnectorAPIHook.java +++ b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/connector/ConnectorAPIHook.java @@ -1,14 +1,27 @@ package net.klnetwork.playerrolechecker.api.data.connector; import net.klnetwork.playerrolechecker.api.data.APIHookCustom; +import net.klnetwork.playerrolechecker.api.data.PlayerDataTable; public interface ConnectorAPIHook extends APIHookCustom { ConnectorBypassTable getBypass(); void setBypass(ConnectorBypassTable table); + /** + * @implNote + *
    わからない場合は使用しないでください + * + * @deprecated + *
    @uses {@link #setPlayerData(PlayerDataTable)} + *
    @uses {@link #setBypass(ConnectorBypassTable)} + */ @Deprecated ConnectorCustomDataBase getCustomDataBase(); + /** + * + * @return + */ ConnectorConfigManager getConfigManager(); } \ No newline at end of file diff --git a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/connector/ConnectorConfigManager.java b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/connector/ConnectorConfigManager.java index 27e9cf2e..78087fc0 100644 --- a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/connector/ConnectorConfigManager.java +++ b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/data/connector/ConnectorConfigManager.java @@ -7,6 +7,9 @@ public interface ConnectorConfigManager { void setJoinMode(boolean joinMode); + /** + * @return ホワイトリストに入っているプレイヤーはスキップ可能か + */ boolean isWhitelistSkipped(); void setWhitelistSkipped(boolean skipped); @@ -15,6 +18,9 @@ public interface ConnectorConfigManager { void setRoleList(List roleList); + /** + * @return 参加したときに実行するコマンドを返します + */ List getJoinCommand(); void setJoinCommand(List joinCommand); diff --git a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/discord/CommandManager.java b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/discord/CommandManager.java index b1bfa987..efe8a162 100644 --- a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/discord/CommandManager.java +++ b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/discord/CommandManager.java @@ -52,7 +52,6 @@ public void onMessageReceived(@NotNull MessageReceivedEvent event) { && name.hasPermission(data.getMember()) && (name.isGlobalCommand() || name.isWorkCommand(data)) && name.isWork(data)) - .collect(Collectors.toList()) .forEach(message -> { try { message.onMessageReceiveEvent(data); diff --git a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/utils/updater/UpdateAlert.java b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/utils/updater/UpdateAlert.java index f48e4448..e7304565 100644 --- a/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/utils/updater/UpdateAlert.java +++ b/PlayerRoleCheckerAPI/src/main/java/net/klnetwork/playerrolechecker/api/utils/updater/UpdateAlert.java @@ -15,7 +15,7 @@ public class UpdateAlert implements Listener { private final UpdateBuilder builder; private boolean releasedNewVersion; - private int id = -1; + private BukkitTask task; private String version; private String current; @@ -32,7 +32,7 @@ public void registerTask() { if (isEnabled()) { stop(); - BukkitTask task = Bukkit.getScheduler().runTaskTimerAsynchronously(builder.plugin(), () -> { + task = Bukkit.getScheduler().runTaskTimerAsynchronously(builder.plugin(), () -> { final boolean hasNewVersion = !isNewerVersion(); if (isConsoleAlert() && !releasedNewVersion && hasNewVersion) { @@ -42,8 +42,6 @@ public void registerTask() { this.releasedNewVersion = hasNewVersion; }, 0, builder.checkTicks()); - id = task.getTaskId(); - Bukkit.getPluginManager().registerEvents(this, getPlugin()); } } @@ -68,8 +66,7 @@ public boolean isNewerVersion() { current = replaceRegex(isDefaultCheck() ? getVersion() : getPlugin().getDescription().getVersion()); - return isSmartVersionCheck() ? Double.parseDouble(current) >= Double.parseDouble(version) - : version.equalsIgnoreCase(current); + return version.equalsIgnoreCase(current); } private String replaceRegex(String string) { @@ -81,10 +78,9 @@ private String replaceRegex(String string) { } public void stop() { - if (id != -1) { - Bukkit.getScheduler().cancelTask(id); - - id = -1; + if (task == null && !task.isCancelled()) { + task.cancel(); + task = null; } } diff --git a/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/PlayerRoleCheckerConnector.java b/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/PlayerRoleCheckerConnector.java index f3181521..066bf979 100644 --- a/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/PlayerRoleCheckerConnector.java +++ b/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/PlayerRoleCheckerConnector.java @@ -23,7 +23,6 @@ import org.bukkit.plugin.java.JavaPlugin; public final class PlayerRoleCheckerConnector extends JavaPlugin implements ConnectorAPIHook { - public static PlayerRoleCheckerConnector INSTANCE; private final JoinManager joinManager = new JoinManager(this); @@ -44,9 +43,12 @@ public final class PlayerRoleCheckerConnector extends JavaPlugin implements Conn .start(); @Override - public void onEnable() { + public void onLoad() { INSTANCE = this; + } + @Override + public void onEnable() { saveDefaultConfig(); PlayerDataSQL.getInstance().create(); @@ -74,7 +76,6 @@ public void onDisable() { if (JDA.INSTANCE != null) { JDA.INSTANCE.shutdown(); } - updateAlert.stop(); } diff --git a/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/command/AddBypassCommand.java b/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/command/AddBypassCommand.java index 6750fbe1..4fd4da56 100644 --- a/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/command/AddBypassCommand.java +++ b/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/command/AddBypassCommand.java @@ -7,6 +7,7 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +//TODO: 書き直し public class AddBypassCommand implements CommandExecutor { @Override diff --git a/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/command/RemoveBypassCommand.java b/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/command/RemoveBypassCommand.java index 93ab3af5..775c8dd7 100644 --- a/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/command/RemoveBypassCommand.java +++ b/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/command/RemoveBypassCommand.java @@ -9,6 +9,7 @@ import java.util.UUID; +//TODO: 書き直し public class RemoveBypassCommand implements CommandExecutor { @Override diff --git a/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/table/LocalSQL.java b/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/table/LocalSQL.java index e8656ce5..becd7603 100644 --- a/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/table/LocalSQL.java +++ b/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/table/LocalSQL.java @@ -9,7 +9,6 @@ import java.util.UUID; public class LocalSQL extends ConnectorBypassTable { - private static ConnectorBypassTable table; private boolean created; diff --git a/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/table/PlayerDataSQL.java b/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/table/PlayerDataSQL.java index 2f7ccf10..92521870 100644 --- a/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/table/PlayerDataSQL.java +++ b/PlayerRoleCheckerConnector/src/main/java/net/klnetwork/playerrolecheckerconnector/table/PlayerDataSQL.java @@ -1,19 +1,10 @@ package net.klnetwork.playerrolecheckerconnector.table; -import net.dv8tion.jda.internal.utils.tuple.Pair; import net.klnetwork.playerrolechecker.api.data.PlayerDataTable; -import net.klnetwork.playerrolechecker.api.data.common.PlayerData; -import net.klnetwork.playerrolechecker.api.utils.CommonUtils; import net.klnetwork.playerrolecheckerconnector.PlayerRoleCheckerConnector; -import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; -import java.sql.*; -import java.util.UUID; -import java.util.function.Consumer; - public class PlayerDataSQL extends PlayerDataTable { - private static PlayerDataTable table; public static PlayerDataTable getInstance() { @@ -28,231 +19,6 @@ public static void setInstance(PlayerDataTable data) { table = data; } - @Override - public void asyncDiscordId(UUID uuid, Consumer discordId) { - asyncDiscordId(uuid.toString(), discordId); - } - - @Override - public void asyncDiscordId(String uuid, Consumer discordId) { - Bukkit.getScheduler().runTaskAsynchronously(PlayerRoleCheckerConnector.INSTANCE, () -> discordId.accept(getDiscordId(uuid))); - } - - @Override - public void asyncDiscordId(UUID uuid, boolean bedrock, Consumer discordId) { - asyncDiscordId(uuid.toString(), bedrock, discordId); - } - - @Override - public void asyncDiscordId(String uuid, boolean bedrock, Consumer discordId) { - Bukkit.getScheduler().runTaskAsynchronously(PlayerRoleCheckerConnector.INSTANCE, () -> discordId.accept(getDiscordId(uuid, bedrock))); - } - - @Override - public void asyncUUID(String discordId, Consumer uuid) { - Bukkit.getScheduler().runTaskAsynchronously(PlayerRoleCheckerConnector.INSTANCE, () -> uuid.accept(getUUID(discordId))); - } - - @Override - public PlayerData getDiscordId(UUID uuid) { - return getDiscordId(uuid.toString()); - } - - @Override - public PlayerData getDiscordId(String uuid) { - PreparedStatement statement = null; - - try { - statement = getConnection().prepareStatement("select * from verifyplayer where uuid = ?"); - statement.setString(1, uuid); - - ResultSet resultSet = statement.executeQuery(); - - if (resultSet.next()) { - return new PlayerData(resultSet.getString(1), resultSet.getString(2), resultSet.getBoolean(3)); - } - - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return null; - } - - @Override - public PlayerData getDiscordId(UUID uuid, boolean bedrock) { - return getDiscordId(uuid.toString(), bedrock); - } - - @Override - public PlayerData getDiscordId(String uuid, boolean bedrock) { - PreparedStatement statement = null; - - try { - statement = getConnection().prepareStatement("select * from verifyplayer where uuid = ? and bedrock = ?"); - statement.setString(1, uuid); - statement.setBoolean(2, bedrock); - - ResultSet resultSet = statement.executeQuery(); - - if (resultSet.next()) { - return new PlayerData(resultSet.getString(1), resultSet.getString(2), resultSet.getBoolean(3)); - } - - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return null; - } - - @Override - public boolean hasData(UUID uuid, boolean bedrock) { - return hasData(uuid.toString(), bedrock); - } - - @Override - public boolean hasData(String uuid, boolean bedrock) { - PreparedStatement statement = null; - - try { - statement = getConnection().prepareStatement("select * from verifyplayer where uuid = ? and bedrock = ?"); - statement.setString(1, uuid); - statement.setBoolean(2, bedrock); - - return statement.executeQuery().next(); - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return false; - } - - @Override - public PlayerData getUUID(String discordId) { - PreparedStatement statement = null; - - try { - statement = getConnection().prepareStatement("select * from verifyplayer where discord = ?"); - statement.setString(1, discordId); - - ResultSet resultSet = statement.executeQuery(); - - if (resultSet.next()) { - return new PlayerData(resultSet.getString(1), resultSet.getString(2), resultSet.getBoolean(3)); - } - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - return null; - } - - @Override - public void put(UUID uuid, String discordId, boolean bedrock) { - put(uuid.toString(), discordId, bedrock); - } - - @Override - public void put(String uuid, String discordId, boolean bedrock) { - Bukkit.getScheduler().runTaskAsynchronously(PlayerRoleCheckerConnector.INSTANCE, () -> { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("insert into verifyplayer values (?,?,?)"); - statement.setString(1, uuid); - statement.setString(2, discordId); - statement.setBoolean(3, bedrock); - statement.execute(); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - }); - } - - @Override - public void remove(UUID uuid, String discordId) { - remove(uuid.toString(), discordId); - } - - @Override - public void remove(String uuid, String discordId) { - Bukkit.getScheduler().runTaskAsynchronously(PlayerRoleCheckerConnector.INSTANCE, () -> { - PreparedStatement statement = null; - try { - statement = getConnection().prepareStatement("delete from verifyplayer where uuid = ? and discord = ?"); - statement.setString(1, uuid); - statement.setString(2, discordId); - statement.execute(); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - }); - } - - @Override - public Pair getSize(String discordId) { - PreparedStatement statement = null; - - try { - statement = getConnection().prepareStatement("SELECT count(*), uuid, bedrock from verifyplayer where discord = ?"); - statement.setString(1, discordId); - - ResultSet resultSet = statement.executeQuery(); - - if (resultSet.next()) { - final int size = resultSet.getInt(1); - - if (size != 0) { - return Pair.of(size, new PlayerData(resultSet.getString(2), discordId, resultSet.getBoolean(3))); - } else { - return pair; - } - } - } catch (SQLException ex) { - ex.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - - return pair; - } - - @Override - public void create() { - Bukkit.getScheduler().runTaskAsynchronously(PlayerRoleCheckerConnector.INSTANCE, () -> { - Statement statement = null; - try { - alter(); - - statement = PlayerDataSQL.getInstance().getConnection().createStatement(); - - statement.executeUpdate("create table if not exists verifyplayer (uuid VARCHAR(50), discord VARCHAR(50), bedrock BOOLEAN)"); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - CommonUtils.close(statement); - } - }); - } - - @Override - public Connection getConnection() throws SQLException { - if (connection == null || connection.isClosed() || isConnectionDead()) { - checkClass(); - - this.connection = CommonUtils.createConnection(getSQLFormat(), getUser(), getPassword()); - } - return connection; - } - @Override public Plugin getPlugin() { return PlayerRoleCheckerConnector.INSTANCE;