This commit is contained in:
Ajneb97 2024-06-19 20:25:58 -04:00
parent eba91312f3
commit d6b889788b
7 changed files with 50 additions and 24 deletions

View file

@ -118,11 +118,17 @@ public class PlayerKits2 extends JavaPlugin {
public void setVersion(){ public void setVersion(){
String packageName = Bukkit.getServer().getClass().getPackage().getName(); String packageName = Bukkit.getServer().getClass().getPackage().getName();
String bukkitVersion = Bukkit.getServer().getBukkitVersion(); String bukkitVersion = Bukkit.getServer().getBukkitVersion().split("-")[0];
if(bukkitVersion.contains("1.20.5") || bukkitVersion.contains("1.20.6")){ switch(bukkitVersion){
serverVersion = ServerVersion.v1_20_R4; case "1.20.5":
}else{ case "1.20.6":
serverVersion = ServerVersion.valueOf(packageName.replace("org.bukkit.craftbukkit.", "")); serverVersion = ServerVersion.v1_20_R4;
break;
case "1.21":
serverVersion = ServerVersion.v1_21_R1;
break;
default:
serverVersion = ServerVersion.valueOf(packageName.replace("org.bukkit.craftbukkit.", ""));
} }
} }

View file

@ -185,7 +185,7 @@ public class MySQLConnection {
}.runTaskAsynchronously(plugin); }.runTaskAsynchronously(plugin);
} }
public void createPlayer(PlayerData player){ public void createPlayer(PlayerData player,SimpleCallback callback){
new BukkitRunnable(){ new BukkitRunnable(){
@Override @Override
public void run() { public void run() {
@ -197,6 +197,13 @@ public class MySQLConnection {
statement.setString(1, player.getUuid()); statement.setString(1, player.getUuid());
statement.setString(2, player.getName()); statement.setString(2, player.getName());
statement.executeUpdate(); statement.executeUpdate();
new BukkitRunnable(){
@Override
public void run() {
callback.onDone();
}
}.runTask(plugin);
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }

View file

@ -0,0 +1,6 @@
package pk.ajneb97.database;
public interface SimpleCallback {
void onDone();
}

View file

@ -1,6 +1,8 @@
package pk.ajneb97.managers; package pk.ajneb97.managers;
import org.bukkit.Bukkit;
import org.bukkit.Color; import org.bukkit.Color;
import org.bukkit.NamespacedKey;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -37,6 +39,7 @@ public class KitItemManager {
kitItem.setDurability(item.getDurability()); kitItem.setDurability(item.getDurability());
} }
ServerVersion serverVersion = PlayerKits2.serverVersion;
if(item.hasItemMeta()) { if(item.hasItemMeta()) {
ItemMeta meta = item.getItemMeta(); ItemMeta meta = item.getItemMeta();
if(meta.hasDisplayName()) { if(meta.hasDisplayName()) {
@ -52,7 +55,12 @@ public class KitItemManager {
if(meta.hasEnchants()) { if(meta.hasEnchants()) {
List<String> enchants = new ArrayList<String>(); List<String> enchants = new ArrayList<String>();
for(Map.Entry<Enchantment,Integer> entry : meta.getEnchants().entrySet()){ for(Map.Entry<Enchantment,Integer> entry : meta.getEnchants().entrySet()){
String enchant = entry.getKey().getName(); String enchant;
if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_21_R1)){
enchant = entry.getKey().getKey().getKey().toUpperCase();
}else{
enchant = entry.getKey().getName();
}
int level = entry.getValue(); int level = entry.getValue();
enchants.add(enchant+";"+level); enchants.add(enchant+";"+level);
} }
@ -81,7 +89,14 @@ public class KitItemManager {
Map<Enchantment, Integer> enchants = meta2.getStoredEnchants(); Map<Enchantment, Integer> enchants = meta2.getStoredEnchants();
List<String> enchantsList = new ArrayList<String>(); List<String> enchantsList = new ArrayList<String>();
for (Map.Entry<Enchantment, Integer> entry : enchants.entrySet()) { for (Map.Entry<Enchantment, Integer> entry : enchants.entrySet()) {
enchantsList.add(entry.getKey().getName()+";"+entry.getValue().intValue()); String enchant;
if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_21_R1)){
enchant = entry.getKey().getKey().getKey().toUpperCase();
}else{
enchant = entry.getKey().getName();
}
int level = entry.getValue();
enchantsList.add(enchant+";"+level);
} }
if(!enchantsList.isEmpty()) { if(!enchantsList.isEmpty()) {
kitItem.setBookEnchants(enchantsList); kitItem.setBookEnchants(enchantsList);
@ -89,7 +104,6 @@ public class KitItemManager {
} }
} }
ServerVersion serverVersion = PlayerKits2.serverVersion;
if(!serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R4)){ if(!serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R4)){
List<String> nbtList = ItemUtils.getNBT(plugin,item); List<String> nbtList = ItemUtils.getNBT(plugin,item);
if(!nbtList.isEmpty()) { if(!nbtList.isEmpty()) {
@ -150,7 +164,8 @@ public class KitItemManager {
for(int i=0;i<enchants.size();i++) { for(int i=0;i<enchants.size();i++) {
String[] sep = enchants.get(i).split(";"); String[] sep = enchants.get(i).split(";");
String enchantName = sep[0]; String enchantName = sep[0];
int enchantLevel = Integer.valueOf(sep[1]); int enchantLevel = Integer.parseInt(sep[1]);
meta.addEnchant(Enchantment.getByName(enchantName), enchantLevel, true); meta.addEnchant(Enchantment.getByName(enchantName), enchantLevel, true);
} }
} }

View file

@ -154,7 +154,6 @@ public class PlayerDataManager {
String uuid = player.getUniqueId().toString(); String uuid = player.getUniqueId().toString();
mySQLConnection.getPlayer(uuid, playerData -> { mySQLConnection.getPlayer(uuid, playerData -> {
removePlayerByUUID(uuid); //Remove data if already exists removePlayerByUUID(uuid); //Remove data if already exists
boolean firstJoin = false;
if(playerData != null) { if(playerData != null) {
players.add(playerData); players.add(playerData);
//Update name if different //Update name if different
@ -163,34 +162,26 @@ public class PlayerDataManager {
mySQLConnection.updatePlayerName(playerData); mySQLConnection.updatePlayerName(playerData);
} }
}else { }else {
firstJoin = true;
playerData = new PlayerData(player.getName(),uuid); playerData = new PlayerData(player.getName(),uuid);
players.add(playerData); players.add(playerData);
//Create if it doesn't exist //Create if it doesn't exist
mySQLConnection.createPlayer(playerData); mySQLConnection.createPlayer(playerData, () -> plugin.getKitsManager().giveFirstJoinKit(player));
}
if(firstJoin){
plugin.getKitsManager().giveFirstJoinKit(player);
} }
}); });
}else{ }else{
boolean firstJoin = false;
PlayerData playerData = getPlayerByUUID(player.getUniqueId().toString()); PlayerData playerData = getPlayerByUUID(player.getUniqueId().toString());
if(playerData == null){ if(playerData == null){
firstJoin = true;
playerData = new PlayerData(player.getName(),player.getUniqueId().toString()); playerData = new PlayerData(player.getName(),player.getUniqueId().toString());
playerData.setModified(true); playerData.setModified(true);
players.add(playerData); players.add(playerData);
plugin.getKitsManager().giveFirstJoinKit(player);
}else{ }else{
if(playerData.getName() == null || !playerData.getName().equals(player.getName())){ if(playerData.getName() == null || !playerData.getName().equals(player.getName())){
playerData.setName(player.getName()); playerData.setName(player.getName());
playerData.setModified(true); playerData.setModified(true);
} }
} }
if(firstJoin){
plugin.getKitsManager().giveFirstJoinKit(player);
}
} }
} }
} }

View file

@ -25,7 +25,8 @@ public enum ServerVersion {
v1_20_R1, v1_20_R1,
v1_20_R2, v1_20_R2,
v1_20_R3, v1_20_R3,
v1_20_R4; v1_20_R4,
v1_21_R1;
public boolean serverVersionGreaterEqualThan(ServerVersion version1,ServerVersion version2){ public boolean serverVersionGreaterEqualThan(ServerVersion version1,ServerVersion version2){
return version1.ordinal() >= version2.ordinal(); return version1.ordinal() >= version2.ordinal();

View file

@ -1,5 +1,5 @@
main: pk.ajneb97.PlayerKits2 main: pk.ajneb97.PlayerKits2
version: 1.11.4 version: 1.12.1
name: PlayerKits2 name: PlayerKits2
api-version: 1.13 api-version: 1.13
softdepend: [Vault,PlaceholderAPI] softdepend: [Vault,PlaceholderAPI]