From 1fe1c63ca7174b305f78adbca28aaabc78d584c1 Mon Sep 17 00:00:00 2001 From: Husky <39809509+Huskydog9988@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:56:46 -0400 Subject: [PATCH] namelayer use NameAPI --- ansible/build.gradle.kts | 6 +-- .../gamma-config/plugins/NameLayer/config.yml | 12 ++++++ .../paper-config/plugins/NameLayer/config.yml | 12 ++++++ .../proxy-config/plugins/civproxy/config.yml | 2 +- .../pvp-config/plugins/NameLayer/config.yml | 12 ++++++ .../0100_create_databases.sql | 2 + plugins/namelayer-paper/build.gradle.kts | 2 + .../civcraft/mc/namelayer/NameLayerAPI.java | 40 +++++-------------- .../mc/namelayer/NameLayerPlugin.java | 34 +++++++++++----- .../namelayer/listeners/PlayerListener.java | 2 - .../src/main/resources/config.yml | 12 ++++++ 11 files changed, 90 insertions(+), 46 deletions(-) diff --git a/ansible/build.gradle.kts b/ansible/build.gradle.kts index 13502690a..e1e90e76c 100644 --- a/ansible/build.gradle.kts +++ b/ansible/build.gradle.kts @@ -22,7 +22,7 @@ dependencies { paperPlugin(project(path = ":plugins:jukealert-paper", configuration = "shadow")) paperPlugin(project(path = ":plugins:kirabukkitgateway-paper", configuration = "shadow")) paperPlugin(project(path = ":plugins:namecolors-paper")) - paperPlugin(project(path = ":plugins:namelayer-paper")) + paperPlugin(project(path = ":plugins:namelayer-paper", configuration = "shadow")) paperPlugin(project(path = ":plugins:railswitch-paper")) paperPlugin(project(path = ":plugins:randomspawn-paper")) paperPlugin(project(path = ":plugins:realisticbiomes-paper")) @@ -46,7 +46,7 @@ dependencies { gammaPlugin(project(path = ":plugins:itemexchange-paper")) gammaPlugin(project(path = ":plugins:jukealert-paper", configuration = "shadow")) gammaPlugin(project(path = ":plugins:namecolors-paper")) - gammaPlugin(project(path = ":plugins:namelayer-paper")) + gammaPlugin(project(path = ":plugins:namelayer-paper", configuration = "shadow")) gammaPlugin(project(path = ":plugins:railswitch-paper")) gammaPlugin(project(path = ":plugins:randomspawn-paper")) gammaPlugin(project(path = ":plugins:realisticbiomes2-paper")) @@ -62,7 +62,7 @@ dependencies { pvpPlugin(project(path = ":plugins:kitpvp-paper")) pvpPlugin(project(path = ":plugins:voidworld-paper")) pvpPlugin(project(path = ":plugins:heliodor-paper")) - pvpPlugin(project(path = ":plugins:namelayer-paper")) + pvpPlugin(project(path = ":plugins:namelayer-paper", configuration = "shadow")) pvpPlugin(project(path = ":plugins:civchat2-paper")) pvpPlugin(project(path = ":plugins:namecolors-paper")) diff --git a/ansible/files/gamma-config/plugins/NameLayer/config.yml b/ansible/files/gamma-config/plugins/NameLayer/config.yml index 025e25f0e..5e47dfaef 100644 --- a/ansible/files/gamma-config/plugins/NameLayer/config.yml +++ b/ansible/files/gamma-config/plugins/NameLayer/config.yml @@ -39,3 +39,15 @@ persistance: nameRandomizer: active: false grace: 600000 + +nameAPI: + database: + user: ${CIV_MYSQL_USERNAME} + password: ${CIV_MYSQL_PASSWORD} + host: ${CIV_MYSQL_HOST} + port: 3306 + database: nameapi + poolsize: 10 + connection_timeout: 10000 + idle_timeout: 600000 + max_lifetime: 7200000 diff --git a/ansible/files/paper-config/plugins/NameLayer/config.yml b/ansible/files/paper-config/plugins/NameLayer/config.yml index 19f54e59d..bf1f64aec 100644 --- a/ansible/files/paper-config/plugins/NameLayer/config.yml +++ b/ansible/files/paper-config/plugins/NameLayer/config.yml @@ -39,3 +39,15 @@ persistance: nameRandomizer: active: false grace: 600000 + +nameAPI: + database: + user: ${CIV_MYSQL_USERNAME} + password: ${CIV_MYSQL_PASSWORD} + host: ${CIV_MYSQL_HOST} + port: 3306 + database: nameapi + poolsize: 10 + connection_timeout: 10000 + idle_timeout: 600000 + max_lifetime: 7200000 diff --git a/ansible/files/proxy-config/plugins/civproxy/config.yml b/ansible/files/proxy-config/plugins/civproxy/config.yml index 8d8610e99..ee5599c5c 100644 --- a/ansible/files/proxy-config/plugins/civproxy/config.yml +++ b/ansible/files/proxy-config/plugins/civproxy/config.yml @@ -3,7 +3,7 @@ database: password: ${CIV_MYSQL_PASSWORD} host: ${CIV_MYSQL_HOST} port: 3306 - database: civproxy + database: nameapi poolsize: 10 connection_timeout: 10000 idle_timeout: 600000 diff --git a/ansible/files/pvp-config/plugins/NameLayer/config.yml b/ansible/files/pvp-config/plugins/NameLayer/config.yml index 7dea930d1..1f4049d9f 100644 --- a/ansible/files/pvp-config/plugins/NameLayer/config.yml +++ b/ansible/files/pvp-config/plugins/NameLayer/config.yml @@ -18,3 +18,15 @@ persistance: nameRandomizer: active: false grace: 600000 + +nameAPI: + database: + user: ${CIV_MYSQL_USERNAME} + password: ${CIV_MYSQL_PASSWORD} + host: ${CIV_MYSQL_HOST} + port: 3306 + database: nameapi + poolsize: 10 + connection_timeout: 10000 + idle_timeout: 600000 + max_lifetime: 7200000 diff --git a/containers/provisioning/mariadb/docker-entrypoint-initdb.d/0100_create_databases.sql b/containers/provisioning/mariadb/docker-entrypoint-initdb.d/0100_create_databases.sql index 9278cf7ae..7968b1f0c 100755 --- a/containers/provisioning/mariadb/docker-entrypoint-initdb.d/0100_create_databases.sql +++ b/containers/provisioning/mariadb/docker-entrypoint-initdb.d/0100_create_databases.sql @@ -12,6 +12,7 @@ CREATE DATABASE essenceglue; CREATE DATABASE exilepearl; CREATE DATABASE realisticbiomes; CREATE DATABASE heliodor; +CREATE DATABASE nameapi; GRANT ALL PRIVILEGES ON `donum`.* TO 'mariadb'@'%'; GRANT ALL PRIVILEGES ON `banstick`.* TO 'mariadb'@'%'; @@ -27,6 +28,7 @@ GRANT ALL PRIVILEGES ON `essenceglue`.* TO 'mariadb'@'%'; GRANT ALL PRIVILEGES ON `exilepearl`.* TO 'mariadb'@'%'; GRANT ALL PRIVILEGES ON `realisticbiomes`.* TO 'mariadb'@'%'; GRANT ALL PRIVILEGES ON `heliodor`.* TO 'mariadb'@'%'; +GRANT ALL PRIVILEGES ON `nameapi`.* TO 'mariadb'@'%'; CREATE DATABASE pvp_civduties; CREATE DATABASE pvp_civmodcore; diff --git a/plugins/namelayer-paper/build.gradle.kts b/plugins/namelayer-paper/build.gradle.kts index 95c3e8372..ef484f2ec 100644 --- a/plugins/namelayer-paper/build.gradle.kts +++ b/plugins/namelayer-paper/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.paper.userdev) + alias(libs.plugins.shadow) } version = "3.0.6" @@ -10,4 +11,5 @@ dependencies { } compileOnly(project(":plugins:civmodcore-paper")) + api(project(":libraries:name-api")) } diff --git a/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/NameLayerAPI.java b/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/NameLayerAPI.java index 188cfef41..748c087f9 100644 --- a/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/NameLayerAPI.java +++ b/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/NameLayerAPI.java @@ -1,38 +1,18 @@ package vg.civcraft.mc.namelayer; -import java.util.HashMap; -import java.util.Map; +import com.zaxxer.hikari.HikariConfig; import java.util.UUID; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; +import net.civmc.nameApi.NameAPI; +import org.jetbrains.annotations.Nullable; public class NameLayerAPI { private static GroupManager groupManager; - private static final Map uuidToPlayer = new HashMap<>(); - private static final Map playerToUuid = new HashMap<>(); + private static NameAPI nameAPI; - public NameLayerAPI(GroupManager man) { + public NameLayerAPI(GroupManager man, HikariConfig nameAPIConfig) { groupManager = man; - - // TODO: hookup to new NameAPI - Bukkit.getScheduler().runTaskAsynchronously(NameLayerPlugin.getInstance(), () -> { - Map uuidToPlayer = new HashMap<>(); - Map playerToUuid = new HashMap<>(); - for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) { - playerToUuid.put(offlinePlayer.getName(), offlinePlayer.getUniqueId()); - uuidToPlayer.put(offlinePlayer.getUniqueId(), offlinePlayer.getName()); - } - Bukkit.getScheduler().runTask(NameLayerPlugin.getInstance(), () -> { - this.uuidToPlayer.putAll(uuidToPlayer); - this.playerToUuid.putAll(playerToUuid); - }); - }); - } - - public static void associate(String playerName, UUID uuid) { - uuidToPlayer.put(uuid, playerName); - playerToUuid.put(playerName, uuid); + nameAPI = new NameAPI(NameLayerPlugin.getInstance().getSLF4JLogger(), nameAPIConfig); } /** @@ -42,11 +22,11 @@ public class NameLayerAPI { return groupManager; } - public static UUID getUUID(String s) { - return playerToUuid.get(s); + public static @Nullable UUID getUUID(String s) { + return nameAPI.getUUID(s); } - public static String getCurrentName(UUID uuid) { - return uuidToPlayer.get(uuid); + public static @Nullable String getCurrentName(UUID uuid) { + return nameAPI.getCurrentName(uuid); } } diff --git a/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/NameLayerPlugin.java b/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/NameLayerPlugin.java index 94df49ba6..e692aab29 100644 --- a/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/NameLayerPlugin.java +++ b/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/NameLayerPlugin.java @@ -1,5 +1,6 @@ package vg.civcraft.mc.namelayer; +import com.zaxxer.hikari.HikariConfig; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -45,7 +46,7 @@ public class NameLayerPlugin extends ACivMod { instance = this; loadDatabases(); ClassHandler.Initialize(Bukkit.getServer()); - new NameLayerAPI(new GroupManager()); + new NameLayerAPI(new GroupManager(), getNameAPIConfig()); registerListeners(); if (loadGroups) { PermissionType.initialize(); @@ -72,7 +73,7 @@ public class NameLayerPlugin extends ACivMod { return instance; } - public void loadDatabases() { + private void loadDatabases() { String host = config.getString("sql.hostname", "localhost"); int port = config.getInt("sql.port", 3306); String dbname = config.getString("sql.dbname", "namelayer"); @@ -159,6 +160,24 @@ public class NameLayerPlugin extends ACivMod { } + private HikariConfig getNameAPIConfig() { + final String nameAPIPrefix = "nameAPI.database."; + + HikariConfig dbConfig = new HikariConfig(); + dbConfig.setJdbcUrl("jdbc:" + config.getString(nameAPIPrefix + "driver", "mariadb") + "://" + config.getString(nameAPIPrefix + "host", "localhost") + ":" + + config.getInt(nameAPIPrefix + "port", 3306) + "/" + config.getString(nameAPIPrefix + "database", "minecraft")); + dbConfig.setConnectionTimeout(config.getInt(nameAPIPrefix + "connection_timeout", 10_000)); + dbConfig.setIdleTimeout(config.getInt(nameAPIPrefix + "idle_timeout", 600_000)); + dbConfig.setMaxLifetime(config.getInt(nameAPIPrefix + "max_lifetime", 7_200_000)); + dbConfig.setMaximumPoolSize(config.getInt(nameAPIPrefix + "poolsize", 10)); + dbConfig.setUsername(config.getString(nameAPIPrefix + "user", "root")); + String password = config.getString(nameAPIPrefix + "password"); + if (password != null && !password.isBlank()) { + dbConfig.setPassword(password); + } + return dbConfig; + } + /** * @return Returns the GroupManagerDatabase. */ @@ -168,16 +187,11 @@ public class NameLayerPlugin extends ACivMod { public static void log(Level level, String message) { if (level == Level.INFO) { - Bukkit.getLogger().log(level, "[NameLayer:] Info follows\n" + - message); + NameLayerPlugin.getInstance().getSLF4JLogger().info(message); } else if (level == Level.WARNING) { - Bukkit.getLogger().log(level, "[NameLayer:] Warning follows\n" + - message); + NameLayerPlugin.getInstance().getSLF4JLogger().warn(message); } else if (level == Level.SEVERE) { - Bukkit.getLogger() - .log(level, "[NameLayer:] Stack Trace follows\n --------------------------------------\n" + - message + - "\n --------------------------------------"); + NameLayerPlugin.getInstance().getSLF4JLogger().error(message); } } diff --git a/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/listeners/PlayerListener.java b/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/listeners/PlayerListener.java index a4cd8d0ef..1415829c9 100644 --- a/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/listeners/PlayerListener.java +++ b/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/listeners/PlayerListener.java @@ -27,8 +27,6 @@ public class PlayerListener implements Listener { Player p = event.getPlayer(); UUID uuid = p.getUniqueId(); - NameLayerAPI.associate(p.getName(), p.getUniqueId()); - if (!p.hasPlayedBefore()) { handleFirstJoin(p); } diff --git a/plugins/namelayer-paper/src/main/resources/config.yml b/plugins/namelayer-paper/src/main/resources/config.yml index 9c25bc1be..72c8835b7 100644 --- a/plugins/namelayer-paper/src/main/resources/config.yml +++ b/plugins/namelayer-paper/src/main/resources/config.yml @@ -40,3 +40,15 @@ persistance: nameRandomizer: active: false grace: 600000 + +nameAPI: + database: + user: 'user' + password: 'password' + host: 'hostname' + port: 3306 + database: nameapi + poolsize: 10 + connection_timeout: 10000 + idle_timeout: 600000 + max_lifetime: 7200000