1.21.1
This commit is contained in:
parent
a503fda405
commit
750b549533
14 changed files with 182 additions and 134 deletions
6
pom.xml
6
pom.xml
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
<groupId>pk.ajneb97</groupId>
|
||||
<artifactId>PlayerKits2</artifactId>
|
||||
<version>1.20.2</version>
|
||||
<version>1.21.1</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>21</maven.compiler.source>
|
||||
|
|
@ -41,13 +41,13 @@
|
|||
<dependency>
|
||||
<groupId>io.papermc.paper</groupId>
|
||||
<artifactId>paper-api</artifactId>
|
||||
<version>1.21.10-R0.1-SNAPSHOT</version>
|
||||
<version>1.21.11-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.21.10-R0.1-SNAPSHOT</version>
|
||||
<version>1.21.11-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import org.bukkit.configuration.file.FileConfiguration;
|
|||
import org.bukkit.entity.Player;
|
||||
import pk.ajneb97.configs.MainConfigManager;
|
||||
import pk.ajneb97.managers.MessagesManager;
|
||||
import pk.ajneb97.managers.PlayerDataManager;
|
||||
import pk.ajneb97.model.Kit;
|
||||
import pk.ajneb97.model.internal.GiveKitInstructions;
|
||||
import pk.ajneb97.model.internal.PlayerKitsMessageResult;
|
||||
|
|
@ -170,13 +171,16 @@ public class MainCommand implements CommandExecutor, TabCompleter {
|
|||
String kitName = args[1];
|
||||
String playerName = args[2];
|
||||
|
||||
PlayerKitsMessageResult result = plugin.getPlayerDataManager().resetKitForPlayer(playerName,kitName,playerName.equals("*"));
|
||||
if(result.isError()){
|
||||
msgManager.sendMessage(sender, result.getMessage(), true);
|
||||
}else{
|
||||
PlayerDataManager playerDataManager = plugin.getPlayerDataManager();
|
||||
if(playerName.equals("*")){
|
||||
playerDataManager.resetKitForAllPlayers(kitName,result -> {
|
||||
msgManager.sendMessage(sender, messagesConfig.getString("kitResetCorrectAll")
|
||||
.replace("%kit%",kitName), true);
|
||||
});
|
||||
}else{
|
||||
PlayerKitsMessageResult result = playerDataManager.resetKitForPlayer(playerName,kitName);
|
||||
if(result.isError()){
|
||||
msgManager.sendMessage(sender, result.getMessage(), true);
|
||||
}else{
|
||||
msgManager.sendMessage(sender, messagesConfig.getString("kitResetCorrect")
|
||||
.replace("%kit%",kitName).replace("%player%",playerName), true);
|
||||
|
|
|
|||
|
|
@ -144,13 +144,17 @@ public class PlayerKits2 extends JavaPlugin {
|
|||
serverVersion = ServerVersion.v1_21_R5;
|
||||
break;
|
||||
case "1.21.9":
|
||||
case "1.21.10":
|
||||
serverVersion = ServerVersion.v1_21_R6;
|
||||
break;
|
||||
case "1.21.11":
|
||||
serverVersion = ServerVersion.v1_21_R7;
|
||||
break;
|
||||
default:
|
||||
try{
|
||||
serverVersion = ServerVersion.valueOf(packageName.replace("org.bukkit.craftbukkit.", ""));
|
||||
}catch(Exception e){
|
||||
serverVersion = ServerVersion.v1_21_R6;
|
||||
serverVersion = ServerVersion.v1_21_R7;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,14 @@ public abstract class DataFolderConfigManager {
|
|||
}
|
||||
}
|
||||
|
||||
public CommonConfig getConfigFile(String pathName) {
|
||||
public CommonConfig getConfigFile(String pathName,boolean create) {
|
||||
String pathFile = plugin.getDataFolder() + File.separator + folderName;
|
||||
File folder = new File(pathFile);
|
||||
File file = new File(folder, pathName);
|
||||
if(!file.exists() && !create) {
|
||||
return null;
|
||||
}
|
||||
|
||||
CommonConfig commonConfig = new CommonConfig(pathName, plugin, folderName, true);
|
||||
commonConfig.registerConfig();
|
||||
return commonConfig;
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ public class KitsConfigManager extends DataFolderConfigManager{
|
|||
|
||||
public void saveConfig(Kit kit){
|
||||
String kitName = kit.getName();
|
||||
CommonConfig kitConfig = getConfigFile(kitName+".yml");
|
||||
CommonConfig kitConfig = getConfigFile(kitName+".yml",true);
|
||||
|
||||
FileConfiguration config = kitConfig.getConfig();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
package pk.ajneb97.configs;
|
||||
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import pk.ajneb97.PlayerKits2;
|
||||
import pk.ajneb97.configs.model.CommonConfig;
|
||||
import pk.ajneb97.model.PlayerData;
|
||||
import pk.ajneb97.model.PlayerDataKit;
|
||||
import pk.ajneb97.model.internal.GenericCallback;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
|
@ -23,15 +26,20 @@ public class PlayersConfigManager extends DataFolderConfigManager{
|
|||
|
||||
@Override
|
||||
public void loadConfigs(){
|
||||
Map<UUID, PlayerData> players = new HashMap<>();
|
||||
// No use for player config
|
||||
}
|
||||
|
||||
ArrayList<CommonConfig> configs = getConfigs();
|
||||
for(CommonConfig commonConfig : configs){
|
||||
FileConfiguration config = commonConfig.getConfig();
|
||||
String uuidString = commonConfig.getPath().replace(".yml", "");
|
||||
public void loadConfig(UUID uuid, GenericCallback<PlayerData> callback) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
PlayerData playerData = null;
|
||||
CommonConfig playerConfig = getConfigFile(uuid+".yml",false);
|
||||
if(playerConfig != null) {
|
||||
// If config exists
|
||||
FileConfiguration config = playerConfig.getConfig();
|
||||
String name = config.getString("name");
|
||||
ArrayList<PlayerDataKit> playerDataKits = new ArrayList<>();
|
||||
|
||||
if (config.contains("kits")) {
|
||||
for (String key : config.getConfigurationSection("kits").getKeys(false)) {
|
||||
long cooldown = config.getLong("kits." + key + ".cooldown");
|
||||
|
|
@ -47,19 +55,25 @@ public class PlayersConfigManager extends DataFolderConfigManager{
|
|||
}
|
||||
}
|
||||
|
||||
UUID uuid = UUID.fromString(uuidString);
|
||||
PlayerData playerData = new PlayerData(uuid, name);
|
||||
playerData = new PlayerData(uuid, name);
|
||||
playerData.setKits(playerDataKits);
|
||||
|
||||
players.put(uuid, playerData);
|
||||
}
|
||||
|
||||
plugin.getPlayerDataManager().setPlayers(players);
|
||||
PlayerData finalPlayer = playerData;
|
||||
|
||||
new BukkitRunnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
callback.onDone(finalPlayer);
|
||||
}
|
||||
}.runTask(plugin);
|
||||
}
|
||||
}.runTaskAsynchronously(plugin);
|
||||
}
|
||||
|
||||
public void saveConfig(PlayerData playerData){
|
||||
String playerName = playerData.getName();
|
||||
CommonConfig playerConfig = getConfigFile(playerData.getUuid()+".yml");
|
||||
CommonConfig playerConfig = getConfigFile(playerData.getUuid()+".yml",true);
|
||||
FileConfiguration config = playerConfig.getConfig();
|
||||
|
||||
config.set("name", playerName);
|
||||
|
|
@ -90,4 +104,16 @@ public class PlayersConfigManager extends DataFolderConfigManager{
|
|||
}
|
||||
}
|
||||
|
||||
public void resetKitForAllPlayers(String kitName){
|
||||
ArrayList<CommonConfig> configs = getConfigs();
|
||||
for(CommonConfig commonConfig : configs) {
|
||||
FileConfiguration config = commonConfig.getConfig();
|
||||
if(!config.contains("kits."+kitName)){
|
||||
continue;
|
||||
}
|
||||
config.set("kits."+kitName,null);
|
||||
|
||||
commonConfig.saveConfig();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ import pk.ajneb97.PlayerKits2;
|
|||
import pk.ajneb97.managers.MessagesManager;
|
||||
import pk.ajneb97.model.PlayerData;
|
||||
import pk.ajneb97.model.PlayerDataKit;
|
||||
import pk.ajneb97.model.internal.GenericCallback;
|
||||
import pk.ajneb97.model.internal.SimpleCallback;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
|
|
@ -29,7 +31,6 @@ public class MySQLConnection {
|
|||
connection = new HikariConnection(config);
|
||||
connection.getHikari().getConnection();
|
||||
createTables();
|
||||
loadData();
|
||||
Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage(plugin.prefix+" &aSuccessfully connected to the Database."));
|
||||
}catch(Exception e) {
|
||||
Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage(plugin.prefix+" &cError while connecting to the Database."));
|
||||
|
|
@ -45,50 +46,6 @@ public class MySQLConnection {
|
|||
}
|
||||
}
|
||||
|
||||
public void loadData(){
|
||||
Map<UUID, PlayerData> playerMap = new HashMap<>();
|
||||
try(Connection connection = getConnection()){
|
||||
PreparedStatement statement = connection.prepareStatement(
|
||||
"SELECT playerkits_players.UUID, playerkits_players.PLAYER_NAME, " +
|
||||
"playerkits_players_kits.NAME, " +
|
||||
"playerkits_players_kits.COOLDOWN, " +
|
||||
"playerkits_players_kits.ONE_TIME, " +
|
||||
"playerkits_players_kits.BOUGHT " +
|
||||
"FROM playerkits_players LEFT JOIN playerkits_players_kits " +
|
||||
"ON playerkits_players.UUID = playerkits_players_kits.UUID");
|
||||
|
||||
ResultSet result = statement.executeQuery();
|
||||
|
||||
while(result.next()){
|
||||
UUID uuid = UUID.fromString(result.getString("UUID"));
|
||||
String playerName = result.getString("PLAYER_NAME");
|
||||
String kitName = result.getString("NAME");
|
||||
long cooldown = result.getLong("COOLDOWN");
|
||||
boolean oneTime = result.getBoolean("ONE_TIME");
|
||||
boolean bought = result.getBoolean("BOUGHT");
|
||||
|
||||
PlayerData player = playerMap.get(uuid);
|
||||
if(player == null){
|
||||
//Create and add it
|
||||
player = new PlayerData(uuid,playerName);
|
||||
playerMap.put(uuid, player);
|
||||
}
|
||||
|
||||
if(kitName != null){
|
||||
PlayerDataKit playerDataKit = new PlayerDataKit(kitName);
|
||||
playerDataKit.setCooldown(cooldown);
|
||||
playerDataKit.setOneTime(oneTime);
|
||||
playerDataKit.setBought(bought);
|
||||
player.addKit(playerDataKit);
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
plugin.getPlayerDataManager().setPlayers(playerMap);
|
||||
}
|
||||
|
||||
public void createTables() {
|
||||
try(Connection connection = getConnection()){
|
||||
PreparedStatement statement1 = connection.prepareStatement(
|
||||
|
|
@ -114,7 +71,7 @@ public class MySQLConnection {
|
|||
}
|
||||
}
|
||||
|
||||
public void getPlayer(String uuid,PlayerCallback callback){
|
||||
public void getPlayer(String uuid, GenericCallback<PlayerData> callback){
|
||||
new BukkitRunnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
|
|
@ -167,7 +124,7 @@ public class MySQLConnection {
|
|||
}.runTaskAsynchronously(plugin);
|
||||
}
|
||||
|
||||
public void createPlayer(PlayerData player,SimpleCallback callback){
|
||||
public void createPlayer(PlayerData player, SimpleCallback callback){
|
||||
new BukkitRunnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
package pk.ajneb97.database;
|
||||
|
||||
import pk.ajneb97.model.PlayerData;
|
||||
|
||||
public interface PlayerCallback {
|
||||
|
||||
void onDone(PlayerData player);
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@ import org.bukkit.event.inventory.ClickType;
|
|||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import pk.ajneb97.PlayerKits2;
|
||||
import pk.ajneb97.managers.InventoryManager;
|
||||
import pk.ajneb97.managers.MessagesManager;
|
||||
|
|
@ -33,6 +34,11 @@ public class PlayerListener implements Listener {
|
|||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onLeave(PlayerQuitEvent event){
|
||||
plugin.getPlayerDataManager().manageLeave(event.getPlayer());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void closeInventory(InventoryCloseEvent event){
|
||||
Player player = (Player) event.getPlayer();
|
||||
|
|
|
|||
|
|
@ -243,7 +243,7 @@ public class KitItemManager {
|
|||
if(lore != null) {
|
||||
List<String> loreCopy = new ArrayList<>(lore);
|
||||
if(useMiniMessage){
|
||||
MiniMessageUtils.setItemLore(meta,lore,player,plugin);
|
||||
MiniMessageUtils.setItemLore(meta,loreCopy,player,plugin);
|
||||
}else{
|
||||
for(int i=0;i<loreCopy.size();i++) {
|
||||
String line = OtherUtils.replaceGlobalVariables(loreCopy.get(i),player,plugin);
|
||||
|
|
|
|||
|
|
@ -1,9 +1,13 @@
|
|||
package pk.ajneb97.managers;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import pk.ajneb97.PlayerKits2;
|
||||
import pk.ajneb97.configs.PlayersConfigManager;
|
||||
import pk.ajneb97.database.MySQLConnection;
|
||||
import pk.ajneb97.model.PlayerData;
|
||||
import pk.ajneb97.model.internal.GenericCallback;
|
||||
import pk.ajneb97.model.internal.PlayerKitsMessageResult;
|
||||
import pk.ajneb97.utils.OtherUtils;
|
||||
|
||||
|
|
@ -20,6 +24,7 @@ public class PlayerDataManager {
|
|||
|
||||
public PlayerDataManager(PlayerKits2 plugin){
|
||||
this.plugin = plugin;
|
||||
this.players = new HashMap<>();
|
||||
this.playerNames = new HashMap<>();
|
||||
}
|
||||
|
||||
|
|
@ -27,13 +32,6 @@ public class PlayerDataManager {
|
|||
return players;
|
||||
}
|
||||
|
||||
public void setPlayers(Map<UUID,PlayerData> players) {
|
||||
this.players = players;
|
||||
for(Map.Entry<UUID, PlayerData> entry : players.entrySet()){
|
||||
playerNames.put(entry.getValue().getName(),entry.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
public void addPlayer(PlayerData p){
|
||||
players.put(p.getUuid(),p);
|
||||
playerNames.put(p.getName(), p.getUuid());
|
||||
|
|
@ -68,6 +66,11 @@ public class PlayerDataManager {
|
|||
return players.get(uuid);
|
||||
}
|
||||
|
||||
public void removePlayer(PlayerData playerData){
|
||||
players.remove(playerData.getUuid());
|
||||
playerNames.remove(playerData.getName());
|
||||
}
|
||||
|
||||
public void removePlayerByUUID(UUID uuid){
|
||||
players.remove(uuid);
|
||||
}
|
||||
|
|
@ -133,41 +136,58 @@ public class PlayerDataManager {
|
|||
}
|
||||
}
|
||||
|
||||
public PlayerKitsMessageResult resetKitForPlayer(String name, String kitName, boolean all){
|
||||
PlayerData playerData = getPlayerByName(name);
|
||||
public PlayerKitsMessageResult resetKitForPlayer(String playerName, String kitName){
|
||||
FileConfiguration messagesConfig = plugin.getConfigsManager().getMessagesConfigManager().getConfig();
|
||||
if(playerData == null && !all){
|
||||
if(Bukkit.getPlayer(playerName) == null){
|
||||
return PlayerKitsMessageResult.error(messagesConfig.getString("playerNotOnline")
|
||||
.replace("%player%",playerName));
|
||||
}
|
||||
|
||||
PlayerData playerData = getPlayerByName(playerName);
|
||||
if(playerData == null){
|
||||
return PlayerKitsMessageResult.error(messagesConfig.getString("playerDataNotFound")
|
||||
.replace("%player%",name));
|
||||
.replace("%player%",playerName));
|
||||
}
|
||||
|
||||
if(all){
|
||||
for(Map.Entry<UUID, PlayerData> entry : players.entrySet()){
|
||||
entry.getValue().resetKit(kitName);
|
||||
}
|
||||
}else{
|
||||
playerData.resetKit(kitName);
|
||||
}
|
||||
|
||||
if(plugin.getMySQLConnection() != null){
|
||||
if(all){
|
||||
plugin.getMySQLConnection().resetKit(null,kitName,true);
|
||||
}else{
|
||||
plugin.getMySQLConnection().resetKit(playerData.getUuid().toString(),kitName,false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return PlayerKitsMessageResult.success();
|
||||
}
|
||||
|
||||
|
||||
public void resetKitForAllPlayers(String kitName, GenericCallback<PlayerKitsMessageResult> callback){
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
MySQLConnection mySQLConnection = plugin.getMySQLConnection();
|
||||
if (mySQLConnection == null) {
|
||||
PlayersConfigManager playerConfigsManager = plugin.getConfigsManager().getPlayersConfigManager();
|
||||
playerConfigsManager.resetKitForAllPlayers(kitName);
|
||||
}
|
||||
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
players.values().forEach(p -> p.resetKit(kitName));
|
||||
if(plugin.getMySQLConnection() != null){
|
||||
plugin.getMySQLConnection().resetKit(null,kitName,true);
|
||||
}
|
||||
|
||||
callback.onDone(PlayerKitsMessageResult.success());
|
||||
}
|
||||
}.runTask(plugin);
|
||||
}
|
||||
}.runTaskAsynchronously(plugin);
|
||||
}
|
||||
|
||||
public void manageJoin(Player player){
|
||||
// Create or update data
|
||||
if(plugin.getMySQLConnection() != null){
|
||||
MySQLConnection mySQLConnection = plugin.getMySQLConnection();
|
||||
UUID uuid = player.getUniqueId();
|
||||
mySQLConnection.getPlayer(uuid.toString(), playerData -> {
|
||||
removePlayerByUUID(uuid); //Remove data if already exists
|
||||
if(playerData != null) {
|
||||
addPlayer(playerData);
|
||||
//Update name if different
|
||||
|
|
@ -180,24 +200,49 @@ public class PlayerDataManager {
|
|||
playerData = new PlayerData(uuid, player.getName());
|
||||
addPlayer(playerData);
|
||||
|
||||
//Create if it doesn't exist
|
||||
//Create if it doesn't exist + first join kit
|
||||
mySQLConnection.createPlayer(playerData, () -> plugin.getKitsManager().giveFirstJoinKit(player));
|
||||
}
|
||||
});
|
||||
}else{
|
||||
PlayerData playerData = getPlayer(player,false);
|
||||
if(playerData == null){
|
||||
playerData = new PlayerData(player.getUniqueId(),player.getName());
|
||||
playerData.setModified(true);
|
||||
// Load player data from file if exists
|
||||
plugin.getConfigsManager().getPlayersConfigManager().loadConfig(player.getUniqueId(), playerData -> {
|
||||
if(playerData != null){
|
||||
addPlayer(playerData);
|
||||
plugin.getKitsManager().giveFirstJoinKit(player);
|
||||
}else{
|
||||
if(playerData.getName() == null || !playerData.getName().equals(player.getName())){
|
||||
updatePlayerName(playerData.getName(),player.getName(),player.getUniqueId());
|
||||
playerData.setName(player.getName());
|
||||
playerData.setModified(true);
|
||||
}
|
||||
}else{
|
||||
// Create it if it doesn't exist.
|
||||
playerData = new PlayerData(player.getUniqueId(),player.getName());
|
||||
playerData.setModified(true);
|
||||
addPlayer(playerData);
|
||||
|
||||
// First join kit
|
||||
plugin.getKitsManager().giveFirstJoinKit(player);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void manageLeave(Player player){
|
||||
// Save player data into file and remove from map
|
||||
PlayerData playerData = getPlayer(player,false);
|
||||
if(playerData != null){
|
||||
if(plugin.getMySQLConnection() == null) {
|
||||
if(playerData.isModified()){
|
||||
new BukkitRunnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
plugin.getConfigsManager().getPlayersConfigManager().saveConfig(playerData);
|
||||
}
|
||||
}.runTaskAsynchronously(plugin);
|
||||
}
|
||||
}
|
||||
|
||||
removePlayer(playerData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
package pk.ajneb97.model.internal;
|
||||
|
||||
public interface GenericCallback<T> {
|
||||
|
||||
void onDone(T result);
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package pk.ajneb97.database;
|
||||
package pk.ajneb97.model.internal;
|
||||
|
||||
public interface SimpleCallback {
|
||||
|
||||
|
|
@ -31,7 +31,8 @@ public enum ServerVersion {
|
|||
v1_21_R3,
|
||||
v1_21_R4,
|
||||
v1_21_R5,
|
||||
v1_21_R6;
|
||||
v1_21_R6,
|
||||
v1_21_R7;
|
||||
|
||||
public boolean serverVersionGreaterEqualThan(ServerVersion version1,ServerVersion version2){
|
||||
return version1.ordinal() >= version2.ordinal();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue