From c3f4f868f6ba3457056a32b2a1d7a2a299417c77 Mon Sep 17 00:00:00 2001 From: 41ms_ Date: Sun, 26 Oct 2025 02:28:46 +0200 Subject: [PATCH] Modified File Name Structure, Fixed issues with not removing player permission (needed the player to rejoin), TODO: - Add in game method to manage ranks, permissions and players --- gradlew.bat | 2 +- src/main/java/me/monster/ranks/Main.java | 41 ++--- .../commands/{test.java => TestCommand.java} | 11 +- ...{configManager.java => ConfigManager.java} | 14 +- .../me/monster/ranks/database/DbManager.java | 116 ++++++++++++++ .../me/monster/ranks/database/dbManager.java | 117 -------------- .../{groups.java => GroupManager.java} | 17 +- ...rmissions.java => PermissionsManager.java} | 16 +- .../{players.java => PlayerManager.java} | 24 +-- .../models/{ranks.java => Groups.java} | 4 +- ...ermissions.java => GroupsPermissions.java} | 4 +- .../models/{userInfo.java => User.java} | 4 +- .../{chatListener.java => ChatListener.java} | 6 +- .../{joinListener.java => JoinListener.java} | 17 +- .../ranks/permission/PermissionManager.java | 149 ++++++++++++++++++ .../ranks/permission/permissionManager.java | 88 ----------- .../me/monster/ranks/utils/DefaultGroups.java | 21 +++ .../monster/ranks/utils/GroupsPriority.java | 48 ++++++ .../me/monster/ranks/utils/PlayerUpdater.java | 18 +++ .../me/monster/ranks/utils/defaultGroups.java | 22 --- .../monster/ranks/utils/groupsPriority.java | 57 ------- .../{loadCommands.java => LoadCommands.java} | 4 +- .../{loadListeners.java => LoadListener.java} | 2 +- .../me/monster/ranks/utils/updatePlayer.java | 20 --- 24 files changed, 424 insertions(+), 398 deletions(-) rename src/main/java/me/monster/ranks/commands/{test.java => TestCommand.java} (73%) rename src/main/java/me/monster/ranks/config/{configManager.java => ConfigManager.java} (74%) create mode 100644 src/main/java/me/monster/ranks/database/DbManager.java delete mode 100644 src/main/java/me/monster/ranks/database/dbManager.java rename src/main/java/me/monster/ranks/database/managers/{groups.java => GroupManager.java} (73%) rename src/main/java/me/monster/ranks/database/managers/{permissions.java => PermissionsManager.java} (80%) rename src/main/java/me/monster/ranks/database/managers/{players.java => PlayerManager.java} (69%) rename src/main/java/me/monster/ranks/database/models/{ranks.java => Groups.java} (89%) rename src/main/java/me/monster/ranks/database/models/{groupPermissions.java => GroupsPermissions.java} (87%) rename src/main/java/me/monster/ranks/database/models/{userInfo.java => User.java} (89%) rename src/main/java/me/monster/ranks/listeners/{chatListener.java => ChatListener.java} (66%) rename src/main/java/me/monster/ranks/listeners/{joinListener.java => JoinListener.java} (59%) create mode 100644 src/main/java/me/monster/ranks/permission/PermissionManager.java delete mode 100644 src/main/java/me/monster/ranks/permission/permissionManager.java create mode 100644 src/main/java/me/monster/ranks/utils/DefaultGroups.java create mode 100644 src/main/java/me/monster/ranks/utils/GroupsPriority.java create mode 100644 src/main/java/me/monster/ranks/utils/PlayerUpdater.java delete mode 100644 src/main/java/me/monster/ranks/utils/defaultGroups.java delete mode 100644 src/main/java/me/monster/ranks/utils/groupsPriority.java rename src/main/java/me/monster/ranks/utils/loaders/{loadCommands.java => LoadCommands.java} (97%) rename src/main/java/me/monster/ranks/utils/loaders/{loadListeners.java => LoadListener.java} (98%) delete mode 100644 src/main/java/me/monster/ranks/utils/updatePlayer.java diff --git a/gradlew.bat b/gradlew.bat index df1d5ba..f7f8903 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -10,7 +10,7 @@ @rem Unless required by applicable law or agreed to in writing, software @rem distributed under the License is distributed on an "AS IS" BASIS, @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing userInfo and +@rem See the License for the specific language governing User and @rem limitations under the License. @rem diff --git a/src/main/java/me/monster/ranks/Main.java b/src/main/java/me/monster/ranks/Main.java index b47d754..2a279f1 100644 --- a/src/main/java/me/monster/ranks/Main.java +++ b/src/main/java/me/monster/ranks/Main.java @@ -1,10 +1,10 @@ package me.monster.ranks; -import me.monster.ranks.database.dbManager; -import me.monster.ranks.config.configManager; -import me.monster.ranks.utils.defaultGroups; -import me.monster.ranks.utils.loaders.loadCommands; -import me.monster.ranks.utils.loaders.loadListeners; +import me.monster.ranks.database.DbManager; +import me.monster.ranks.config.ConfigManager; +import me.monster.ranks.utils.DefaultGroups; +import me.monster.ranks.utils.loaders.LoadCommands; +import me.monster.ranks.utils.loaders.LoadListener; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; @@ -14,19 +14,17 @@ public final class Main extends JavaPlugin { public static Main plugin; public static Plugin getPlugin() { return plugin; } - private static dbManager database; + private static DbManager database; @Override public void onEnable() { plugin = this; - // Plugin startup logic // Config file creation and loading - new configManager().createConfigFiles(); - + new ConfigManager().createConfigFiles(); // Database connection etc - database = new dbManager(); + database = new DbManager(); try { database.initializeDatabase(); } catch (SQLException e) { @@ -34,29 +32,20 @@ public final class Main extends JavaPlugin { Main.getLogger("Could not initialize database. (" + e.getMessage() + ")"); } - new defaultGroups().createDefaultGroups(); + new DefaultGroups().createDefaultGroups(); // Load event listeners and commands - loadListeners.load(); - loadCommands.load(); + LoadListener.load(); + LoadCommands.load(); + } - - @Override - public void onDisable() { - // Plugin shutdown logic - Main.getLogger("Shutting down plugin"); + public void onDisable() { Main.getLogger("Shutting down plugin"); } - } + public static void getLogger(String string) { plugin.getLogger().info(string); } - public static void getLogger(String string) { - plugin.getLogger().info(string); - } - - public static dbManager getDatabase() { - return database; - } + public static DbManager getDatabase() { return database; } } diff --git a/src/main/java/me/monster/ranks/commands/test.java b/src/main/java/me/monster/ranks/commands/TestCommand.java similarity index 73% rename from src/main/java/me/monster/ranks/commands/test.java rename to src/main/java/me/monster/ranks/commands/TestCommand.java index 76fa60a..8ae7ed4 100644 --- a/src/main/java/me/monster/ranks/commands/test.java +++ b/src/main/java/me/monster/ranks/commands/TestCommand.java @@ -1,6 +1,6 @@ package me.monster.ranks.commands; -import me.monster.ranks.utils.updatePlayer; +import me.monster.ranks.utils.PlayerUpdater; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -9,13 +9,16 @@ import org.jetbrains.annotations.NotNull; import java.sql.SQLException; -public class test implements CommandExecutor { +import static me.monster.ranks.permission.PermissionManager.clearPlayerPermissions; + +public class TestCommand implements CommandExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String @NotNull [] args) { if (sender.hasPermission("ranks.test")) { - if (sender instanceof Player p) { + if (sender instanceof Player player) { try { - new updatePlayer(p); + clearPlayerPermissions(player); + new PlayerUpdater(player); return true; } catch (SQLException e) { throw new RuntimeException(e); diff --git a/src/main/java/me/monster/ranks/config/configManager.java b/src/main/java/me/monster/ranks/config/ConfigManager.java similarity index 74% rename from src/main/java/me/monster/ranks/config/configManager.java rename to src/main/java/me/monster/ranks/config/ConfigManager.java index 9ea9e8d..3b90ba9 100644 --- a/src/main/java/me/monster/ranks/config/configManager.java +++ b/src/main/java/me/monster/ranks/config/ConfigManager.java @@ -7,7 +7,7 @@ import org.jetbrains.annotations.NotNull; import java.io.File; -public class configManager { +public class ConfigManager { static Plugin plugin = Main.getPlugin(); @@ -26,16 +26,4 @@ public class configManager { static File configFile = new File(plugin.getDataFolder(), "config.yml"); public static @NotNull YamlConfiguration configFile() { return YamlConfiguration.loadConfiguration(configFile); } - public static void saveConfigFiles() { - Main.getLogger("Saving config"); - plugin.saveConfig(); - } - - public void reloadConfigFiles() { - Main.getLogger("Reloading config"); - plugin.reloadConfig(); - } - - - } diff --git a/src/main/java/me/monster/ranks/database/DbManager.java b/src/main/java/me/monster/ranks/database/DbManager.java new file mode 100644 index 0000000..3c5ab9b --- /dev/null +++ b/src/main/java/me/monster/ranks/database/DbManager.java @@ -0,0 +1,116 @@ +package me.monster.ranks.database; + +import me.monster.ranks.Main; +import me.monster.ranks.database.managers.GroupManager; +import me.monster.ranks.database.managers.PermissionsManager; +import me.monster.ranks.database.managers.PlayerManager; +import me.monster.ranks.database.models.GroupsPermissions; +import me.monster.ranks.config.ConfigManager; +import me.monster.ranks.database.models.User; + +import java.sql.*; +import java.util.List; + +public class DbManager { + + private static Connection connection; + + public static Connection getConnection() throws SQLException { + + if(connection != null){ + return connection; + } + + String port = ConfigManager.configFile().getString("mysql.port"); + String host = ConfigManager.configFile().getString("mysql.host"); + String user = ConfigManager.configFile().getString("mysql.user"); + String password = ConfigManager.configFile().getString("mysql.password"); + String database = ConfigManager.configFile().getString("mysql.database"); + String url = "jdbc:mysql://" + host + ":" + port + "/" + database + "?autoReconnect=true"; + + Connection connection = DriverManager.getConnection(url, user, password); + + DbManager.connection = connection; + + Main.getLogger("Connected to database."); + + return connection; + } + + public void initializeDatabase() throws SQLException { + + Statement statement = getConnection().createStatement(); + + String player_infoSQL = "CREATE TABLE IF NOT EXISTS player_info (uuid varchar(36), playerRank TEXT, temp INT, date DATETIME)"; + String groupsSQL = "CREATE TABLE IF NOT EXISTS groups (groupName TEXT, groupPrefix TEXT, groupSuffix TEXT, groupWeight INT, groupParent TEXT)"; + String groupsPermissionsSQL = "CREATE TABLE IF NOT EXISTS group_permissions (groupName TEXT, permission TEXT, value INT, context TEXT)"; + + + statement.execute(player_infoSQL); + statement.execute(groupsSQL); + statement.execute(groupsPermissionsSQL); + + statement.close(); + + } + + //################################################ + //########### Player Info Section ################ + //################################################ + + public static User findPlayerGroupByUUID(String string) throws SQLException { + return PlayerManager.findPlayerGroupByUUID(string); + } + public static List findPlayerGroups(String uuid) throws SQLException { + return PlayerManager.findPlayerGroups(uuid); + } + public static void deletePlayerGroups(User databaseModel) throws SQLException { + PlayerManager.deletePlayerGroups(databaseModel); + } + public static void updatePlayerGroups(User databaseModel) throws SQLException { + PlayerManager.updatePlayerGroups(databaseModel); + } + public static void createPlayer(User databaseModel) throws SQLException { + PlayerManager.createPlayer(databaseModel); + } + + //################################################ + //############# Groups Section ################## + //################################################ + + public static void createGroup(me.monster.ranks.database.models.Groups databaseModel) throws SQLException { + GroupManager.createGroup(databaseModel); + } + + public static void updateGroup(me.monster.ranks.database.models.Groups databaseModel) throws SQLException { + GroupManager.updateGroup(databaseModel); + } + + public static void deleteGroup(me.monster.ranks.database.models.Groups databaseModel) throws SQLException { + GroupManager.deleteGroup(databaseModel); + } + public static me.monster.ranks.database.models.Groups findGroupByName(String groupName) throws SQLException { + return GroupManager.findGroupByName(groupName); + } + + //################################################ + //########### Permission Section ################ + //################################################ + + public static List fetchGroupPermissions(String groupName) throws SQLException { + return PermissionsManager.fetchGroupPermissions(groupName); + } + + public static void updateGroupPermission(GroupsPermissions permission) throws SQLException { + PermissionsManager.updateGroupPermission(permission); + } + + public static void addGroupPermission(GroupsPermissions permission) throws SQLException { + PermissionsManager.addGroupPermission(permission); + } + + public static void deleteGroupPermission(String groupName, String permission, String context) throws SQLException { + PermissionsManager.deleteGroupPermission(groupName, permission, context); + } + +} diff --git a/src/main/java/me/monster/ranks/database/dbManager.java b/src/main/java/me/monster/ranks/database/dbManager.java deleted file mode 100644 index 5a16cfe..0000000 --- a/src/main/java/me/monster/ranks/database/dbManager.java +++ /dev/null @@ -1,117 +0,0 @@ -package me.monster.ranks.database; - -import me.monster.ranks.Main; -import me.monster.ranks.database.managers.groups; -import me.monster.ranks.database.managers.permissions; -import me.monster.ranks.database.managers.players; -import me.monster.ranks.database.models.groupPermissions; -import me.monster.ranks.config.configManager; -import me.monster.ranks.database.models.ranks; -import me.monster.ranks.database.models.userInfo; - -import java.sql.*; -import java.util.List; - -public class dbManager { - - private static Connection connection; - - public static Connection getConnection() throws SQLException { - - if(connection != null){ - return connection; - } - - String port = configManager.configFile().getString("mysql.port"); - String host = configManager.configFile().getString("mysql.host"); - String user = configManager.configFile().getString("mysql.user"); - String password = configManager.configFile().getString("mysql.password"); - String database = configManager.configFile().getString("mysql.database"); - String url = "jdbc:mysql://" + host + ":" + port + "/" + database + "?autoReconnect=true"; - - Connection connection = DriverManager.getConnection(url, user, password); - - dbManager.connection = connection; - - Main.getLogger("Connected to database."); - - return connection; - } - - public void initializeDatabase() throws SQLException { - - Statement statement = getConnection().createStatement(); - - String player_infoSQL = "CREATE TABLE IF NOT EXISTS player_info (uuid varchar(36), playerRank TEXT, temp INT, date DATETIME)"; - String groupsSQL = "CREATE TABLE IF NOT EXISTS groups (groupName TEXT, groupPrefix TEXT, groupSuffix TEXT, groupWeight INT, groupParent TEXT)"; - String groupsPermissionsSQL = "CREATE TABLE IF NOT EXISTS group_permissions (groupName TEXT, permission TEXT, value INT, context TEXT)"; - - - statement.execute(player_infoSQL); - statement.execute(groupsSQL); - statement.execute(groupsPermissionsSQL); - - statement.close(); - - } - - //################################################ - //########### Player Info Section ################ - //################################################ - - public static userInfo findPlayerGroupByUUID(String string) throws SQLException { - return players.findPlayerGroupByUUID(string); - } - public static List findPlayerGroups(String uuid) throws SQLException { - return players.findPlayerGroups(uuid); - } - public static void deletePlayerGroups(userInfo databaseModel) throws SQLException { - players.deletePlayerGroups(databaseModel); - } - public static void updatePlayerGroups(userInfo databaseModel) throws SQLException { - players.updatePlayerGroups(databaseModel); - } - public static void createPlayer(userInfo databaseModel) throws SQLException { - players.createPlayer(databaseModel); - } - - //################################################ - //############# Groups Section ################## - //################################################ - - public static void createGroup(ranks databaseModel) throws SQLException { - groups.createGroup(databaseModel); - } - - public static void updateGroup(ranks databaseModel) throws SQLException { - groups.updateGroup(databaseModel); - } - - public static void deleteGroup(ranks databaseModel) throws SQLException { - groups.deleteGroup(databaseModel); - } - public static ranks findGroupByName(String groupName) throws SQLException { - return groups.findGroupByName(groupName); - } - - //################################################ - //########### Permission Section ################ - //################################################ - - public static List fetchGroupPermissions(String groupName) throws SQLException { - return permissions.fetchGroupPermissions(groupName); - } - - public static void updateGroupPermission(groupPermissions permission) throws SQLException { - permissions.updateGroupPermission(permission); - } - - public static void addGroupPermission(groupPermissions permission) throws SQLException { - permissions.addGroupPermission(permission); - } - - public static void deleteGroupPermission(String groupName, String permission, String context) throws SQLException { - permissions.deleteGroupPermission(groupName, permission, context); - } - -} diff --git a/src/main/java/me/monster/ranks/database/managers/groups.java b/src/main/java/me/monster/ranks/database/managers/GroupManager.java similarity index 73% rename from src/main/java/me/monster/ranks/database/managers/groups.java rename to src/main/java/me/monster/ranks/database/managers/GroupManager.java index b95c9b2..9485ef6 100644 --- a/src/main/java/me/monster/ranks/database/managers/groups.java +++ b/src/main/java/me/monster/ranks/database/managers/GroupManager.java @@ -1,16 +1,15 @@ package me.monster.ranks.database.managers; import me.monster.ranks.Main; -import me.monster.ranks.database.dbManager; -import me.monster.ranks.database.models.ranks; +import me.monster.ranks.database.DbManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -public class groups extends dbManager { +public class GroupManager extends DbManager { - public static void createGroup(ranks databaseModel) throws SQLException { + public static void createGroup(me.monster.ranks.database.models.Groups databaseModel) throws SQLException { PreparedStatement statement = getConnection() .prepareStatement("INSERT INTO groups (groupName, groupPrefix, groupSuffix, groupWeight, groupParent) VALUES (?, ?, ?, ?, ?)"); @@ -25,7 +24,7 @@ public class groups extends dbManager { } - public static void updateGroup(ranks databaseModel) throws SQLException { + public static void updateGroup(me.monster.ranks.database.models.Groups databaseModel) throws SQLException { PreparedStatement statement = getConnection() .prepareStatement("UPDATE groups SET groupName = ?, groupPrefix = ?, groupSuffix = ?, groupWeight = ?, groupParent = ? WHERE groupName = ?"); @@ -40,7 +39,7 @@ public class groups extends dbManager { statement.close(); } - public static void deleteGroup(ranks databaseModel) throws SQLException { + public static void deleteGroup(me.monster.ranks.database.models.Groups databaseModel) throws SQLException { PreparedStatement statement = getConnection().prepareStatement("DELETE FROM groups WHERE groupName = ?"); statement.setString(1, databaseModel.getGroupName()); @@ -52,13 +51,13 @@ public class groups extends dbManager { } - public static ranks findGroupByName(String groupName) throws SQLException { + public static me.monster.ranks.database.models.Groups findGroupByName(String groupName) throws SQLException { PreparedStatement statement = getConnection().prepareStatement("SELECT * FROM groups WHERE groupName = ?"); statement.setString(1, groupName); ResultSet resultSet = statement.executeQuery(); - ranks databaseModel; + me.monster.ranks.database.models.Groups databaseModel; if(resultSet.next()){ - databaseModel = new ranks(resultSet.getString("groupName"), resultSet.getString("groupPrefix"), resultSet.getString("groupSuffix"), resultSet.getInt("groupWeight"), resultSet.getString("groupParent")); + databaseModel = new me.monster.ranks.database.models.Groups(resultSet.getString("groupName"), resultSet.getString("groupPrefix"), resultSet.getString("groupSuffix"), resultSet.getInt("groupWeight"), resultSet.getString("groupParent")); statement.close(); return databaseModel; } diff --git a/src/main/java/me/monster/ranks/database/managers/permissions.java b/src/main/java/me/monster/ranks/database/managers/PermissionsManager.java similarity index 80% rename from src/main/java/me/monster/ranks/database/managers/permissions.java rename to src/main/java/me/monster/ranks/database/managers/PermissionsManager.java index 00b1648..dd0c054 100644 --- a/src/main/java/me/monster/ranks/database/managers/permissions.java +++ b/src/main/java/me/monster/ranks/database/managers/PermissionsManager.java @@ -1,7 +1,7 @@ package me.monster.ranks.database.managers; -import me.monster.ranks.database.dbManager; -import me.monster.ranks.database.models.groupPermissions; +import me.monster.ranks.database.DbManager; +import me.monster.ranks.database.models.GroupsPermissions; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -9,19 +9,19 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -public class permissions extends dbManager { +public class PermissionsManager extends DbManager { - public static List fetchGroupPermissions(String groupName) throws SQLException { + public static List fetchGroupPermissions(String groupName) throws SQLException { String query = "SELECT * FROM group_permissions WHERE groupName = ?"; PreparedStatement statement = getConnection().prepareStatement(query); statement.setString(1, groupName); ResultSet resultSet = statement.executeQuery(); - List permissions = new ArrayList<>(); + List permissions = new ArrayList<>(); while (resultSet.next()) { - groupPermissions permission = new groupPermissions( + GroupsPermissions permission = new GroupsPermissions( resultSet.getString("groupName"), resultSet.getString("permission"), resultSet.getInt("value"), @@ -34,7 +34,7 @@ public class permissions extends dbManager { return permissions; } - public static void updateGroupPermission(groupPermissions permission) throws SQLException { + public static void updateGroupPermission(GroupsPermissions permission) throws SQLException { String query = "UPDATE group_permissions SET permission = ?, value = ?, context = ? WHERE groupName = ? AND permission = ? AND context = ?"; PreparedStatement statement = getConnection().prepareStatement(query); @@ -49,7 +49,7 @@ public class permissions extends dbManager { statement.close(); } - public static void addGroupPermission(groupPermissions permission) throws SQLException { + public static void addGroupPermission(GroupsPermissions permission) throws SQLException { String query = "INSERT INTO group_permissions (groupName, permission, value, context) VALUES (?, ?, ?, ?)"; PreparedStatement statement = getConnection().prepareStatement(query); diff --git a/src/main/java/me/monster/ranks/database/managers/players.java b/src/main/java/me/monster/ranks/database/managers/PlayerManager.java similarity index 69% rename from src/main/java/me/monster/ranks/database/managers/players.java rename to src/main/java/me/monster/ranks/database/managers/PlayerManager.java index cf4b34a..f0b6990 100644 --- a/src/main/java/me/monster/ranks/database/managers/players.java +++ b/src/main/java/me/monster/ranks/database/managers/PlayerManager.java @@ -1,7 +1,7 @@ package me.monster.ranks.database.managers; -import me.monster.ranks.database.dbManager; -import me.monster.ranks.database.models.userInfo; +import me.monster.ranks.database.DbManager; +import me.monster.ranks.database.models.User; import java.sql.Date; import java.sql.PreparedStatement; @@ -10,20 +10,20 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -public class players extends dbManager { +public class PlayerManager extends DbManager { - public static userInfo findPlayerGroupByUUID(String uuid) throws SQLException { + public static User findPlayerGroupByUUID(String uuid) throws SQLException { PreparedStatement statement = getConnection().prepareStatement("SELECT * FROM player_info WHERE uuid = ?"); statement.setString(1, uuid); ResultSet resultSet = statement.executeQuery(); - userInfo databaseModel; + User databaseModel; if(resultSet.next()){ - databaseModel = new userInfo(resultSet.getString("uuid"), resultSet.getString("playerRank"), resultSet.getInt("temp"), resultSet.getDate("date")); + databaseModel = new User(resultSet.getString("uuid"), resultSet.getString("playerRank"), resultSet.getInt("temp"), resultSet.getDate("date")); statement.close(); return databaseModel; } @@ -33,17 +33,17 @@ public class players extends dbManager { return null; } - public static List findPlayerGroups(String uuid) throws SQLException { + public static List findPlayerGroups(String uuid) throws SQLException { PreparedStatement statement = getConnection().prepareStatement("SELECT * FROM player_info WHERE uuid = ?"); statement.setString(1, uuid); ResultSet resultSet = statement.executeQuery(); - List databaseModel = new ArrayList<>(); // Use ArrayList to hold all results + List databaseModel = new ArrayList<>(); // Use ArrayList to hold all results while (resultSet.next()) { - userInfo user = new userInfo(resultSet.getString("uuid"), resultSet.getString("playerRank"), resultSet.getInt("temp"), resultSet.getTimestamp("date")); + User user = new User(resultSet.getString("uuid"), resultSet.getString("playerRank"), resultSet.getInt("temp"), resultSet.getTimestamp("date")); databaseModel.add(user); } @@ -53,7 +53,7 @@ public class players extends dbManager { } - public static void createPlayer(userInfo databaseModel) throws SQLException { + public static void createPlayer(User databaseModel) throws SQLException { PreparedStatement statement = getConnection() .prepareStatement("INSERT INTO player_info (uuid, playerRank, temp, date) VALUES (?, ?, ?, ?)"); statement.setString(1, databaseModel.getPlayerUUID()); @@ -64,7 +64,7 @@ public class players extends dbManager { statement.close(); } - public static void updatePlayerGroups(userInfo databaseModel) throws SQLException { + public static void updatePlayerGroups(User databaseModel) throws SQLException { PreparedStatement statement = getConnection().prepareStatement("UPDATE player_info SET playerRank = ?, temp = ?, date = ? WHERE uuid = ?"); statement.setString(1, databaseModel.getPlayerRank()); statement.setInt(2, databaseModel.getPlayerRankTemp()); @@ -74,7 +74,7 @@ public class players extends dbManager { statement.close(); } - public static void deletePlayerGroups(userInfo databaseModel) throws SQLException { + public static void deletePlayerGroups(User databaseModel) throws SQLException { PreparedStatement statement = getConnection().prepareStatement("DELETE FROM player_info WHERE uuid = ? AND playerRank = ?"); statement.setString(1, databaseModel.getPlayerUUID()); diff --git a/src/main/java/me/monster/ranks/database/models/ranks.java b/src/main/java/me/monster/ranks/database/models/Groups.java similarity index 89% rename from src/main/java/me/monster/ranks/database/models/ranks.java rename to src/main/java/me/monster/ranks/database/models/Groups.java index 4809044..abdcddc 100644 --- a/src/main/java/me/monster/ranks/database/models/ranks.java +++ b/src/main/java/me/monster/ranks/database/models/Groups.java @@ -1,13 +1,13 @@ package me.monster.ranks.database.models; -public class ranks { +public class Groups { private String groupName; private String groupPrefix; private String groupSuffix; private Integer groupWeight; private String groupParent; - public ranks(String groupName, String groupPrefix, String groupSuffix, Integer groupWeight, String groupParent) { + public Groups(String groupName, String groupPrefix, String groupSuffix, Integer groupWeight, String groupParent) { this.groupName = groupName; this.groupPrefix = groupPrefix; this.groupSuffix = groupSuffix; diff --git a/src/main/java/me/monster/ranks/database/models/groupPermissions.java b/src/main/java/me/monster/ranks/database/models/GroupsPermissions.java similarity index 87% rename from src/main/java/me/monster/ranks/database/models/groupPermissions.java rename to src/main/java/me/monster/ranks/database/models/GroupsPermissions.java index d2f3879..0acddc2 100644 --- a/src/main/java/me/monster/ranks/database/models/groupPermissions.java +++ b/src/main/java/me/monster/ranks/database/models/GroupsPermissions.java @@ -1,13 +1,13 @@ package me.monster.ranks.database.models; -public class groupPermissions { +public class GroupsPermissions { private String groupName; private String permission; private Integer value; private String context; - public groupPermissions(String groupName, String permission, Integer value, String context) { + public GroupsPermissions(String groupName, String permission, Integer value, String context) { this.groupName = groupName; this.permission = permission; this.value = value; diff --git a/src/main/java/me/monster/ranks/database/models/userInfo.java b/src/main/java/me/monster/ranks/database/models/User.java similarity index 89% rename from src/main/java/me/monster/ranks/database/models/userInfo.java rename to src/main/java/me/monster/ranks/database/models/User.java index a075808..960fa41 100644 --- a/src/main/java/me/monster/ranks/database/models/userInfo.java +++ b/src/main/java/me/monster/ranks/database/models/User.java @@ -2,13 +2,13 @@ package me.monster.ranks.database.models; import java.util.Date; -public class userInfo { +public class User { private String playerUUID; private String playerRank; private Integer temp; private Date date; - public userInfo(String playerUUID, String playerRank, Integer temp, Date date) { + public User(String playerUUID, String playerRank, Integer temp, Date date) { this.playerUUID = playerUUID; this.playerRank = playerRank; this.temp = temp; diff --git a/src/main/java/me/monster/ranks/listeners/chatListener.java b/src/main/java/me/monster/ranks/listeners/ChatListener.java similarity index 66% rename from src/main/java/me/monster/ranks/listeners/chatListener.java rename to src/main/java/me/monster/ranks/listeners/ChatListener.java index 670047f..5f78f01 100644 --- a/src/main/java/me/monster/ranks/listeners/chatListener.java +++ b/src/main/java/me/monster/ranks/listeners/ChatListener.java @@ -1,18 +1,18 @@ package me.monster.ranks.listeners; -import me.monster.ranks.utils.groupsPriority; +import me.monster.ranks.utils.GroupsPriority; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -public class chatListener implements Listener { +public class ChatListener implements Listener { @EventHandler(priority = EventPriority.HIGH) public void onChat(org.bukkit.event.player.AsyncPlayerChatEvent event) { Player p = event.getPlayer(); - event.setFormat(groupsPriority.getHighestPrefix(p) + " " + event.getPlayer().getDisplayName() + groupsPriority.getHighestSuffix(p) + ": " + event.getMessage()); + event.setFormat(GroupsPriority.getHighestPrefix(p) + " " + event.getPlayer().getDisplayName() + GroupsPriority.getHighestSuffix(p) + ": " + event.getMessage()); event.setCancelled(false); } diff --git a/src/main/java/me/monster/ranks/listeners/joinListener.java b/src/main/java/me/monster/ranks/listeners/JoinListener.java similarity index 59% rename from src/main/java/me/monster/ranks/listeners/joinListener.java rename to src/main/java/me/monster/ranks/listeners/JoinListener.java index b6758a7..1858c91 100644 --- a/src/main/java/me/monster/ranks/listeners/joinListener.java +++ b/src/main/java/me/monster/ranks/listeners/JoinListener.java @@ -1,9 +1,9 @@ package me.monster.ranks.listeners; import me.monster.ranks.Main; -import me.monster.ranks.database.dbManager; -import me.monster.ranks.database.models.userInfo; -import me.monster.ranks.utils.updatePlayer; +import me.monster.ranks.database.DbManager; +import me.monster.ranks.database.models.User; +import me.monster.ranks.utils.PlayerUpdater; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -11,14 +11,13 @@ import org.bukkit.event.player.PlayerJoinEvent; import java.sql.SQLException; -public class joinListener implements Listener { +public class JoinListener implements Listener { public void createPlayer(Player player) throws SQLException { - userInfo userInfo2 = dbManager.findPlayerGroupByUUID(player.getUniqueId().toString()); - - if(userInfo2 == null) { - dbManager.createPlayer(new userInfo(player.getUniqueId().toString(), "default", 0, null)); + User user2 = DbManager.findPlayerGroupByUUID(player.getUniqueId().toString()); + if(user2 == null) { + DbManager.createPlayer(new User(player.getUniqueId().toString(), "default", 0, null)); } } @@ -31,7 +30,7 @@ public class joinListener implements Listener { e.printStackTrace(); Main.getLogger("Could not update player stats after join."); } - new updatePlayer(p); + new PlayerUpdater(p); } } diff --git a/src/main/java/me/monster/ranks/permission/PermissionManager.java b/src/main/java/me/monster/ranks/permission/PermissionManager.java new file mode 100644 index 0000000..3d95a41 --- /dev/null +++ b/src/main/java/me/monster/ranks/permission/PermissionManager.java @@ -0,0 +1,149 @@ +package me.monster.ranks.permission; + +import me.monster.ranks.Main; +import me.monster.ranks.database.DbManager; +import me.monster.ranks.database.models.GroupsPermissions; +import me.monster.ranks.database.models.Groups; +import me.monster.ranks.utils.GroupsPriority; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.permissions.Permission; +import org.bukkit.permissions.PermissionAttachment; + +import java.sql.SQLException; +import java.util.*; + +import static me.monster.ranks.config.ConfigManager.configFile; + +public class PermissionManager { + + static PermissionAttachment attachment; + + static HashMap perms = new HashMap<>(); + + private static final YamlConfiguration config = configFile(); + + public static void loadAndApplyPermissions(Player player) { + try { +// denyRemovedPermissions(player, getHierarchyPermissions(player)); + applyPermissionsToPlayer(player, getHierarchyPermissions(player)); + } catch (SQLException e) { + e.printStackTrace(); // Log or handle the exception as needed + } + } + + public static List getGroupHierarchy(Player player) throws SQLException { + + List groupHierarchy = new ArrayList<>(); + + Groups highestGroup = GroupsPriority.getHighestGroup(player); + + groupHierarchy.add(highestGroup); + + groupHierarchy.add(DbManager.findGroupByName(highestGroup.getGroupParent())); + while (!groupHierarchy.getFirst().getGroupParent().equals("default")) { + highestGroup = DbManager.findGroupByName(groupHierarchy.getFirst().getGroupParent()); + groupHierarchy.addFirst(highestGroup); + } + groupHierarchy.addFirst(DbManager.findGroupByName("default")); + for (Groups rank : groupHierarchy) { + Main.getLogger("Group: " + rank.getGroupName()); + } + return groupHierarchy; + } + + public static List getHierarchyPermissions(Player p) throws SQLException { + + List groupHierarchy = getGroupHierarchy(p); + List permissions = new ArrayList<>(); + + for (Groups rank : groupHierarchy) { + permissions.addAll(DbManager.fetchGroupPermissions(rank.getGroupName())); + } + + return permissions; + } + + private static String getServerName() { + return config.getString("server.name"); + } + + private static void applyPermissionsToPlayer(Player player, List permissions) { + attachment = player.addAttachment(Main.getPlugin()); + + // Clear existing permissions (optional: only if you need to refresh) + attachment.getPermissions().clear(); + + // Loop through all the permissions for the player's group + for (GroupsPermissions permission : permissions) { + String perm = permission.getPermission(); + boolean allow = permission.getValue() == 1; // 1 = allow, 0 = deny + if (permission.getContext().equals("server=" + getServerName()) || permission.getContext().isEmpty()) { + perms.put(player.getUniqueId(), attachment); + PermissionAttachment pperms = perms.get(player.getUniqueId()); + pperms.setPermission(perm, allow); + } + if (permission.getPermission().equals("*")) { + setAllPermissions(player, attachment, allow); + } + } + } + + public static void setAllPermissions(Player player, PermissionAttachment attachment, boolean allow) { + Set permissions = Bukkit.getPluginManager().getPermissions(); + for (Permission permission : permissions) { + perms.put(player.getUniqueId(), attachment); + PermissionAttachment pperms = perms.get(player.getUniqueId()); + pperms.setPermission(permission, allow); + + } + } + +// public static void denyRemovedPermissions(Player player, List currentPermissions) { +// // Retrieve the player's current permission attachment +// PermissionAttachment attachment = perms.get(player.getUniqueId()); +// +// if (attachment == null) { +// return; // If no permissions are set, nothing to deny +// } +// +// // Get the existing permissions the player has +// Set currentPerms = new HashSet<>(attachment.getPermissions().keySet()); +// +// // Get the permissions the player should have after group modification +// Set newPerms = new HashSet<>(); +// for (GroupsPermissions perm : currentPermissions) { +// newPerms.add(perm.getPermission()); +// } +// +// // Loop through current permissions, and deny those that are no longer present +// for (String perm : currentPerms) { +// if (!newPerms.contains(perm)) { +// // Deny this permission for the player (remove it from the attachment) +// attachment.setPermission(perm, false); +// } +// } +// } + + public static void clearPlayerPermissions(Player player) { + // Ensure the player has a permission attachment + if (perms.containsKey(player.getUniqueId())) { + // Get the permission attachment + PermissionAttachment attachment = perms.get(player.getUniqueId()); + + // Remove the attachment from the player, which clears their permissions + player.removeAttachment(attachment); + + // Optionally, clear the entry from the perms map + perms.remove(player.getUniqueId()); + + // Log or notify that the permissions were cleared + Main.getLogger("Cleared permissions for player: " + player.getName()); + } else { + Main.getLogger("No permissions found for player: " + player.getName()); + } + } + + +} diff --git a/src/main/java/me/monster/ranks/permission/permissionManager.java b/src/main/java/me/monster/ranks/permission/permissionManager.java deleted file mode 100644 index 5a2cb1a..0000000 --- a/src/main/java/me/monster/ranks/permission/permissionManager.java +++ /dev/null @@ -1,88 +0,0 @@ -package me.monster.ranks.permission; - -import me.monster.ranks.Main; -import me.monster.ranks.database.dbManager; -import me.monster.ranks.database.models.groupPermissions; -import me.monster.ranks.database.models.ranks; -import me.monster.ranks.utils.groupsPriority; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.permissions.Permission; -import org.bukkit.permissions.PermissionAttachment; -import org.bukkit.permissions.PermissionAttachmentInfo; - -import java.sql.SQLException; -import java.util.HashMap; -import java.util.List; -import java.util.Set; -import java.util.UUID; - -import static me.monster.ranks.config.configManager.configFile; - -public class permissionManager { - - static HashMap perms = new HashMap<>(); - - private static final YamlConfiguration config = configFile(); - - - public static void loadAndApplyPermissions(Player player) { - try { - // Step 1: Get the player's group and server context - ranks groupName = groupsPriority.getHighestGroup(player); - - // Step 2: Fetch the permissions for the group and context - List permissions = dbManager.fetchGroupPermissions(groupName.getGroupName()); - - // Step 3: Apply the permissions to the player - applyPermissionsToPlayer(player, permissions); - } catch (SQLException e) { - e.printStackTrace(); // Log or handle the exception as needed - } - } - - private static String getServerName() { - return config.getString("server.name"); - } - - private static void applyPermissionsToPlayer(Player player, List permissions) { - PermissionAttachment attachment = player.addAttachment(Main.getPlugin()); - removePermissions(player, attachment); - - // Clear existing permissions (optional: only if you need to refresh) - attachment.getPermissions().clear(); - - // Loop through all the permissions for the player's group - for (groupPermissions permission : permissions) { - String perm = permission.getPermission(); - boolean allow = permission.getValue() == 1; // 1 = allow, 0 = deny - if (permission.getContext().equals("server=" + getServerName()) || permission.getContext().isEmpty()) { - perms.put(player.getUniqueId(), attachment); - PermissionAttachment pperms = perms.get(player.getUniqueId()); - pperms.setPermission(perm, allow); - } - if (permission.getPermission().equals("*")) { - getAllPermissions(player, attachment, allow); - } - } - } - - public static void getAllPermissions(Player player, PermissionAttachment attachment, boolean allow) { - Set permissions = Main.getPlugin().getServer().getPluginManager().getPermissions(); - for (Permission permission : permissions) { - perms.put(player.getUniqueId(), attachment); - PermissionAttachment pperms = perms.get(player.getUniqueId()); - pperms.setPermission(permission, allow); - } - } - - public static void removePermissions(Player player, PermissionAttachment attachment) { - for (PermissionAttachmentInfo perm : player.getEffectivePermissions()) { - perms.put(player.getUniqueId(), attachment); - PermissionAttachment pperms = perms.get(player.getUniqueId()); - pperms.unsetPermission(String.valueOf(perm)); - - } - } - -} diff --git a/src/main/java/me/monster/ranks/utils/DefaultGroups.java b/src/main/java/me/monster/ranks/utils/DefaultGroups.java new file mode 100644 index 0000000..d221f36 --- /dev/null +++ b/src/main/java/me/monster/ranks/utils/DefaultGroups.java @@ -0,0 +1,21 @@ +package me.monster.ranks.utils; + +import me.monster.ranks.database.DbManager; +import me.monster.ranks.database.models.Groups; + +import java.sql.SQLException; + +public class DefaultGroups { + public void createDefaultGroups() { + try { + if (DbManager.findGroupByName("default") == null) { + DbManager.createGroup(new Groups("default", "Player", "", 1, "")); + } + if (DbManager.findGroupByName("owner") == null ){ + DbManager.createGroup(new Groups("owner", "Owner ", "", 90, "default")); + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/me/monster/ranks/utils/GroupsPriority.java b/src/main/java/me/monster/ranks/utils/GroupsPriority.java new file mode 100644 index 0000000..68be109 --- /dev/null +++ b/src/main/java/me/monster/ranks/utils/GroupsPriority.java @@ -0,0 +1,48 @@ +package me.monster.ranks.utils; + +import me.monster.ranks.database.DbManager; +import me.monster.ranks.database.models.Groups; +import me.monster.ranks.database.models.User; +import org.bukkit.entity.Player; + +import java.sql.SQLException; +import java.util.List; + +public class GroupsPriority { + + public static Groups getHighestGroup(Player p) throws SQLException { + List test = DbManager.findPlayerGroups(p.getUniqueId().toString()); + + String highestGroupName = null; + int highestWeight = Integer.MIN_VALUE; // Start with the lowest possible weight + + for (User User : test) { + String groupName = User.getPlayerRank(); // Replace with the correct method or field + Groups group = DbManager.findGroupByName(groupName); // Retrieve the group from the database + if (group != null) { + int weight = group.getGroupWeight(); + if (weight > highestWeight) { + highestWeight = weight; + highestGroupName = group.getGroupName(); // Return the group name with the highest weight + } + } + } + return DbManager.findGroupByName(highestGroupName); + } + + public static String getHighestPrefix(Player p) { + try { + return getHighestGroup(p).getGroupPrefix(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + public static String getHighestSuffix(Player p) { + try { + return getHighestGroup(p).getGroupSuffix(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } +} + diff --git a/src/main/java/me/monster/ranks/utils/PlayerUpdater.java b/src/main/java/me/monster/ranks/utils/PlayerUpdater.java new file mode 100644 index 0000000..8fd5b54 --- /dev/null +++ b/src/main/java/me/monster/ranks/utils/PlayerUpdater.java @@ -0,0 +1,18 @@ +package me.monster.ranks.utils; + +import me.monster.ranks.database.models.Groups; +import me.monster.ranks.permission.PermissionManager; +import org.bukkit.entity.Player; + +import java.sql.SQLException; + + +public class PlayerUpdater { + public PlayerUpdater(Player player) throws SQLException { + Groups highestGroup = GroupsPriority.getHighestGroup(player); + player.setPlayerListName(highestGroup.getGroupPrefix() + " " + player.getName() + highestGroup.getGroupSuffix()); + PermissionManager.loadAndApplyPermissions(player); + player.recalculatePermissions(); + player.updateCommands(); + } +} diff --git a/src/main/java/me/monster/ranks/utils/defaultGroups.java b/src/main/java/me/monster/ranks/utils/defaultGroups.java deleted file mode 100644 index 2471ac8..0000000 --- a/src/main/java/me/monster/ranks/utils/defaultGroups.java +++ /dev/null @@ -1,22 +0,0 @@ -package me.monster.ranks.utils; - -import me.monster.ranks.database.dbManager; -import me.monster.ranks.database.models.ranks; - -import java.sql.SQLException; - -public class defaultGroups { - public void createDefaultGroups() { - - try { - if (dbManager.findGroupByName("default") == null) { - dbManager.createGroup(new ranks("default", "Player", "", 1, "default")); - } - if (dbManager.findGroupByName("owner") == null ){ - dbManager.createGroup(new ranks("owner", "Owner ", "", 90, "default")); - } - } catch (SQLException e) { - throw new RuntimeException(e); - } - } -} diff --git a/src/main/java/me/monster/ranks/utils/groupsPriority.java b/src/main/java/me/monster/ranks/utils/groupsPriority.java deleted file mode 100644 index 046f3e7..0000000 --- a/src/main/java/me/monster/ranks/utils/groupsPriority.java +++ /dev/null @@ -1,57 +0,0 @@ -package me.monster.ranks.utils; - -import me.monster.ranks.database.dbManager; -import me.monster.ranks.database.models.ranks; -import me.monster.ranks.database.models.userInfo; -import org.bukkit.entity.Player; - -import java.sql.SQLException; -import java.util.List; - -public class groupsPriority { - - public static ranks getHighestGroup(Player p) throws SQLException { - // Get the list of groups associated with the player (userInfo objects) - List test = dbManager.findPlayerGroups(p.getUniqueId().toString()); - - String highestGroupName = null; - int highestWeight = Integer.MIN_VALUE; // Start with the lowest possible weight - - // Loop through the list of groups associated with the player - for (userInfo userInfo : test) { - // Assuming test.get(i) contains some identifier that can be used to fetch the group - String groupName = userInfo.getPlayerRank(); // Replace with the correct method or field - ranks group = dbManager.findGroupByName(groupName); // Retrieve the group from the database - - if (group != null) { - // Get the weight of the group - int weight = group.getGroupWeight(); - - // If the current group weight is higher than the previous highest, update the highest group - if (weight > highestWeight) { - highestWeight = weight; - highestGroupName = group.getGroupName(); // Return the group name with the highest weight - } - } - } - - // Return the name of the group with the highest weight - return dbManager.findGroupByName(highestGroupName); - } - - public static String getHighestPrefix(Player p) { - try { - return getHighestGroup(p).getGroupPrefix(); - } catch (SQLException e) { - throw new RuntimeException(e); - } - } - public static String getHighestSuffix(Player p) { - try { - return getHighestGroup(p).getGroupSuffix(); - } catch (SQLException e) { - throw new RuntimeException(e); - } - } -} - diff --git a/src/main/java/me/monster/ranks/utils/loaders/loadCommands.java b/src/main/java/me/monster/ranks/utils/loaders/LoadCommands.java similarity index 97% rename from src/main/java/me/monster/ranks/utils/loaders/loadCommands.java rename to src/main/java/me/monster/ranks/utils/loaders/LoadCommands.java index 3cc6ebc..947a8f7 100644 --- a/src/main/java/me/monster/ranks/utils/loaders/loadCommands.java +++ b/src/main/java/me/monster/ranks/utils/loaders/LoadCommands.java @@ -14,7 +14,7 @@ import java.util.Objects; import java.util.jar.JarEntry; import java.util.jar.JarFile; -public class loadCommands { +public class LoadCommands { public static void load() { Plugin plugin = Main.getPlugin(); @@ -38,7 +38,7 @@ public class loadCommands { instance = clazz.getDeclaredConstructor().newInstance(); } - String commandName = clazz.getSimpleName().toLowerCase(); // assuming command name is class name + String commandName = clazz.getSimpleName().toLowerCase().replace("command", ""); // assuming command name is class name PluginCommand command = javaPlugin.getCommand(commandName); if (command != null) { command.setExecutor((CommandExecutor) instance); diff --git a/src/main/java/me/monster/ranks/utils/loaders/loadListeners.java b/src/main/java/me/monster/ranks/utils/loaders/LoadListener.java similarity index 98% rename from src/main/java/me/monster/ranks/utils/loaders/loadListeners.java rename to src/main/java/me/monster/ranks/utils/loaders/LoadListener.java index b8b3074..c1981f3 100644 --- a/src/main/java/me/monster/ranks/utils/loaders/loadListeners.java +++ b/src/main/java/me/monster/ranks/utils/loaders/LoadListener.java @@ -12,7 +12,7 @@ import java.util.Objects; import java.util.jar.JarEntry; import java.util.jar.JarFile; -public class loadListeners { +public class LoadListener { public static void load() { Plugin plugin = Main.getPlugin(); diff --git a/src/main/java/me/monster/ranks/utils/updatePlayer.java b/src/main/java/me/monster/ranks/utils/updatePlayer.java deleted file mode 100644 index 54be232..0000000 --- a/src/main/java/me/monster/ranks/utils/updatePlayer.java +++ /dev/null @@ -1,20 +0,0 @@ -package me.monster.ranks.utils; - -import me.monster.ranks.database.models.ranks; -import me.monster.ranks.permission.permissionManager; -import org.bukkit.entity.Player; - -import java.sql.SQLException; - -public class updatePlayer { - public updatePlayer(Player player) throws SQLException { - - ranks highestGroup = groupsPriority.getHighestGroup(player); - - player.setPlayerListName(highestGroup.getGroupPrefix() + " " + player.getName()); - permissionManager.loadAndApplyPermissions(player); - player.recalculatePermissions(); - player.updateCommands(); - player.sendMessage("Your group has been updated to " + highestGroup.getGroupName()); - } -}