From 45cd3bd37a2a2eca29e8a7b9a5127c6b57e34e23 Mon Sep 17 00:00:00 2001
From: Vestri
Date: Sat, 8 Aug 2020 18:47:37 +0200
Subject: [PATCH] cleaned code removed unused stuff
---
plugin.yml | 2 +-
src/pts/java/ConfigManager.java | 50 ++-------------------
src/pts/java/PlayertoSql.java | 21 ++++-----
src/pts/java/api/PlayerManagement.java | 28 ++++++++----
src/pts/java/command/CommandSavePlayer.java | 4 +-
src/pts/java/database/DatabaseManager.java | 38 ++++++++--------
src/pts/java/event/PlayerJoin.java | 1 -
src/pts/java/event/PlayerQuit.java | 4 +-
src/pts/java/player/AutosaveManager.java | 34 +-------------
src/pts/java/player/ItemManager.java | 1 -
src/pts/java/player/PlayerManager.java | 8 ++--
11 files changed, 64 insertions(+), 127 deletions(-)
diff --git a/plugin.yml b/plugin.yml
index e62b5d5..fd5bedc 100644
--- a/plugin.yml
+++ b/plugin.yml
@@ -1,7 +1,7 @@
name: PlayertoSql
author: Vestri
description: Plugin Player to Sql
-version: 0.31
+version: 1.0
api-version: 1.15
main: pts.java.PlayertoSql
depend: [ProtocolLib]
diff --git a/src/pts/java/ConfigManager.java b/src/pts/java/ConfigManager.java
index 95099ed..0fcd0a7 100644
--- a/src/pts/java/ConfigManager.java
+++ b/src/pts/java/ConfigManager.java
@@ -36,51 +36,9 @@ protected static void loadConfig()
}
//get values
- joinLoadDelay = getConfigValueInt("general.loaddelay");
- playerFile = getConfigValueBool("general.playerfile");
- autosaveInterval = getConfigValueInt("general.autosaveinterval");
- playercreate = getConfigValueBool("general.playercreate");
- }
-
- //try to get String value
- public static String getConfigValueString(String value)
- {
- if (!PlayertoSql.getInstance().getConfig().contains(value))
- {
- PlayertoSql.getInstance().getLogger().severe("Value: " + value + " not found in config.yml of" + PlayertoSql.getInstance().getName());
- return "ValueNotFound";
- }
- else
- {
- return PlayertoSql.getInstance().getConfig().getString(value);
- }
- }
-
- //try to get Int value
- public static int getConfigValueInt(String value)
- {
- if (!PlayertoSql.getInstance().getConfig().contains(value))
- {
- PlayertoSql.getInstance().getLogger().severe("Value: " + value + " not found in config.yml of" + PlayertoSql.getInstance().getName());
- return 0;
- }
- else
- {
- return PlayertoSql.getInstance().getConfig().getInt(value);
- }
- }
-
- //try to get Boolean
- public static Boolean getConfigValueBool(String value)
- {
- if (!PlayertoSql.getInstance().getConfig().contains(value))
- {
- PlayertoSql.getInstance().getLogger().severe("Value: " + value + " not found in config.yml of" + PlayertoSql.getInstance().getName());
- return false;
- }
- else
- {
- return PlayertoSql.getInstance().getConfig().getBoolean(value);
- }
+ joinLoadDelay = PlayertoSql.getInstance().getConfig().getInt("general.loaddelay");
+ playerFile = PlayertoSql.getInstance().getConfig().getBoolean("general.playerfile");
+ autosaveInterval = PlayertoSql.getInstance().getConfig().getInt("general.autosaveinterval");
+ playercreate = PlayertoSql.getInstance().getConfig().getBoolean("general.playercreate");
}
}
diff --git a/src/pts/java/PlayertoSql.java b/src/pts/java/PlayertoSql.java
index b5c2be9..f170e2e 100644
--- a/src/pts/java/PlayertoSql.java
+++ b/src/pts/java/PlayertoSql.java
@@ -22,6 +22,16 @@ public class PlayertoSql extends JavaPlugin
static PlayerManager playerManager;
+ public static PlayertoSql getInstance()
+ {
+ return instance;
+ }
+
+ public PlayerManager getPlayerManager()
+ {
+ return playerManager;
+ }
+
//on enable plugin load config reg events and commands check if autosave an start it
public void onEnable()
{
@@ -34,7 +44,7 @@ public void onEnable()
new PlayerManagement();
regEvents();
regCommands();
- if (ConfigManager.getConfigValueBool("general.autosave"))
+ if (getConfig().getBoolean("general.autosave"))
{
autosaveManager = new AutosaveManager();
}
@@ -77,13 +87,4 @@ public void onDisable()
Bukkit.getLogger().info("[PlayertoSql] has been disabled!");
}
- public static PlayertoSql getInstance()
- {
- return instance;
- }
-
- public PlayerManager getPlayerManager()
- {
- return playerManager;
- }
}
diff --git a/src/pts/java/api/PlayerManagement.java b/src/pts/java/api/PlayerManagement.java
index 3b92729..1597eaf 100644
--- a/src/pts/java/api/PlayerManagement.java
+++ b/src/pts/java/api/PlayerManagement.java
@@ -17,6 +17,7 @@ public static PlayerManagement getInstance()
{
return instance;
}
+
//check if player is not on disabledPlayerSaved list
//if not then start a task with 1 tick delay to save player
@SuppressWarnings("unused")
@@ -24,18 +25,20 @@ public boolean savePlayerSync(Player p)
{
if (!PlayertoSql.getInstance().getPlayerManager().disabledPlayerSaved.contains(p.getUniqueId()))
{
- Bukkit.getScheduler().runTask(PlayertoSql.getInstance(), ()-> PlayertoSql.getInstance().getPlayerManager().savePlayer(p, p.getInventory().getStorageContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(),false,"api async"));
+ Bukkit.getScheduler().runTask(PlayertoSql.getInstance(), () -> PlayertoSql.getInstance().getPlayerManager().savePlayer(p, p.getInventory().getStorageContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(), false, "api async"));
return true;
}
return false;
}
+
//start a task with 1 tick delay to save player
@SuppressWarnings("unused")
public boolean savePlayerIgnoreDisableSync(Player p)
{
- Bukkit.getScheduler().runTask(PlayertoSql.getInstance(), ()-> PlayertoSql.getInstance().getPlayerManager().savePlayer(p, p.getInventory().getStorageContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(),true,"api async"));
+ Bukkit.getScheduler().runTask(PlayertoSql.getInstance(), () -> PlayertoSql.getInstance().getPlayerManager().savePlayer(p, p.getInventory().getStorageContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(), true, "api async"));
return true;
}
+
//check if player is not on disabledPlayerSaved list
//if not then start a async task to save player
@SuppressWarnings("unused")
@@ -44,19 +47,21 @@ public boolean savePlayerAsync(Player p)
if (!PlayertoSql.getInstance().getPlayerManager().disabledPlayerSaved.contains(p.getUniqueId()))
{
Bukkit.getScheduler().runTaskAsynchronously(PlayertoSql.getInstance(), () ->
- PlayertoSql.getInstance().getPlayerManager().savePlayer(p, p.getInventory().getStorageContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(),false,"api sync"));
+ PlayertoSql.getInstance().getPlayerManager().savePlayer(p, p.getInventory().getStorageContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(), false, "api sync"));
return true;
}
return false;
}
+
//start a async task to save player
@SuppressWarnings("unused")
public boolean savePlayerIgnoreDisableAsync(Player p)
{
Bukkit.getScheduler().runTaskAsynchronously(PlayertoSql.getInstance(), () ->
- PlayertoSql.getInstance().getPlayerManager().savePlayer(p, p.getInventory().getStorageContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(),true,"api sync"));
+ PlayertoSql.getInstance().getPlayerManager().savePlayer(p, p.getInventory().getStorageContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(), true, "api sync"));
return true;
}
+
//add player to DisablePlayerSave list
@SuppressWarnings("unused")
public boolean disablePlayerSave(Player p)
@@ -64,6 +69,7 @@ public boolean disablePlayerSave(Player p)
PlayertoSql.getInstance().getPlayerManager().addDisablePlayerSave(p.getUniqueId());
return true;
}
+
//remove player to DisablePlayerSave list
@SuppressWarnings("unused")
public boolean enablePlayerSave(Player p)
@@ -71,6 +77,7 @@ public boolean enablePlayerSave(Player p)
PlayertoSql.getInstance().getPlayerManager().removeDisablePlayerSave(p.getUniqueId());
return true;
}
+
//check if player is not on disabledPlayerLoaded list
//if not then start a task with 1 tick delay to load player
@SuppressWarnings("unused")
@@ -78,35 +85,39 @@ public boolean loadPlayerSync(Player p)
{
if (!PlayertoSql.getInstance().getPlayerManager().disabledPlayerLoaded.contains(p.getUniqueId()))
{
- Bukkit.getScheduler().runTask(PlayertoSql.getInstance(), ()-> PlayertoSql.getInstance().getPlayerManager().loadPlayer(p,false));
+ Bukkit.getScheduler().runTask(PlayertoSql.getInstance(), () -> PlayertoSql.getInstance().getPlayerManager().loadPlayer(p, false));
return true;
}
return false;
}
+
//start a task with 1 tick delay to load player
@SuppressWarnings("unused")
public boolean loadPlayerIgnoreDisableSync(Player p)
{
- Bukkit.getScheduler().runTask(PlayertoSql.getInstance(), ()-> PlayertoSql.getInstance().getPlayerManager().loadPlayer(p,true));
+ Bukkit.getScheduler().runTask(PlayertoSql.getInstance(), () -> PlayertoSql.getInstance().getPlayerManager().loadPlayer(p, true));
return true;
}
+
//check if player is not on disabledPlayerLoaded list
//if not then start a async task to load player
@SuppressWarnings("unused")
public boolean loadPlayerAsync(Player p)
{
Bukkit.getScheduler().runTaskAsynchronously(PlayertoSql.getInstance(), () ->
- PlayertoSql.getInstance().getPlayerManager().loadPlayer(p,false));
+ PlayertoSql.getInstance().getPlayerManager().loadPlayer(p, false));
return true;
}
+
//start a async task to load player
@SuppressWarnings("unused")
public boolean loadPlayerIgnoreDisableAsync(Player p)
{
Bukkit.getScheduler().runTaskAsynchronously(PlayertoSql.getInstance(), () ->
- PlayertoSql.getInstance().getPlayerManager().loadPlayer(p,true));
+ PlayertoSql.getInstance().getPlayerManager().loadPlayer(p, true));
return true;
}
+
//add player to DisablePlayerLoad list
@SuppressWarnings("unused")
public boolean disablePlayerLoad(Player p)
@@ -114,6 +125,7 @@ public boolean disablePlayerLoad(Player p)
PlayertoSql.getInstance().getPlayerManager().addDisablePlayerLoad(p.getUniqueId());
return true;
}
+
//remove player to DisablePlayerLoad list
@SuppressWarnings("unused")
public boolean enablePlayerLoad(Player p)
diff --git a/src/pts/java/command/CommandSavePlayer.java b/src/pts/java/command/CommandSavePlayer.java
index ee6076f..d4a3ccd 100644
--- a/src/pts/java/command/CommandSavePlayer.java
+++ b/src/pts/java/command/CommandSavePlayer.java
@@ -32,13 +32,13 @@ public boolean onCommand(CommandSender commandSender, Command command, String s,
if (args.length == 1)
{
Bukkit.getScheduler().runTaskAsynchronously(PlayertoSql.getInstance(), () ->
- PlayertoSql.getInstance().getPlayerManager().savePlayer(p, p.getInventory().getContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(), false,"Command"));
+ PlayertoSql.getInstance().getPlayerManager().savePlayer(p, p.getInventory().getContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(), false, "Command"));
return true;
}
//2 args save player sync 1 tick delay
else if (args.length == 2)
{
- Bukkit.getScheduler().runTask(PlayertoSql.getInstance(), () -> PlayertoSql.getInstance().getPlayerManager().savePlayer(p, p.getInventory().getStorageContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(), false,"Command"));
+ Bukkit.getScheduler().runTask(PlayertoSql.getInstance(), () -> PlayertoSql.getInstance().getPlayerManager().savePlayer(p, p.getInventory().getStorageContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(), false, "Command"));
return true;
}
}
diff --git a/src/pts/java/database/DatabaseManager.java b/src/pts/java/database/DatabaseManager.java
index 6ad562c..0343ab2 100644
--- a/src/pts/java/database/DatabaseManager.java
+++ b/src/pts/java/database/DatabaseManager.java
@@ -1,6 +1,5 @@
package pts.java.database;
-import pts.java.ConfigManager;
import pts.java.PlayertoSql;
import pts.java.player.ItemManager;
import org.bukkit.entity.Player;
@@ -24,9 +23,9 @@ public class DatabaseManager
static String date;
- static String updateInventoryStatement = "";
- static String updateArmorStatement = "";
- static String updateEnderChestStatement = "";
+ static String updateInventoryStatement;
+ static String updateArmorStatement;
+ static String updateEnderChestStatement;
public static byte inventoryLength = 36;
public static byte enderChestLength = 27;
@@ -92,11 +91,11 @@ private void createStatementStrings()
//load all config values
private void loadConfigValues()
{
- dbname = ConfigManager.getConfigValueString("database.mysql.databaseName");
- playerTableName = ConfigManager.getConfigValueString("database.mysql.tableNameplayer");
- playerInventoryTableName = ConfigManager.getConfigValueString("database.mysql.tableNameinventory");
- playerInventoryArmorTableName = ConfigManager.getConfigValueString("database.mysql.tableNamearmor");
- playerEnderChestTableName = ConfigManager.getConfigValueString("database.mysql.tableNameenderchest");
+ dbname = PlayertoSql.getInstance().getConfig().getString("database.mysql.databaseName");
+ playerTableName = PlayertoSql.getInstance().getConfig().getString("database.mysql.tableNameplayer");
+ playerInventoryTableName = PlayertoSql.getInstance().getConfig().getString("database.mysql.tableNameinventory");
+ playerInventoryArmorTableName = PlayertoSql.getInstance().getConfig().getString("database.mysql.tableNamearmor");
+ playerEnderChestTableName = PlayertoSql.getInstance().getConfig().getString("database.mysql.tableNameenderchest");
Date dt = new Date();
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
@@ -106,15 +105,14 @@ private void loadConfigValues()
//create connection with db
private void createConnection(boolean reconnect)
{
-
String ssl = "";
- String username = ConfigManager.getConfigValueString("database.mysql.user");
- String password = ConfigManager.getConfigValueString("database.mysql.password");
- if (ConfigManager.getConfigValueBool("database.mysql.host"))
+ String username = PlayertoSql.getInstance().getConfig().getString("database.mysql.user");
+ String password = PlayertoSql.getInstance().getConfig().getString("database.mysql.password");
+ if (PlayertoSql.getInstance().getConfig().getBoolean("database.mysql.host"))
{
ssl = "&sslMode=REQUIRED";
}
- String server = "jdbc:mysql://" + ConfigManager.getConfigValueString("database.mysql.host") + ":" + ConfigManager.getConfigValueString("database.mysql.port") + "/" + dbname + "?autoReconnect=true&allowMultiQueries=true&rewriteBatchedStatements=true" + ssl;
+ String server = "jdbc:mysql://" + PlayertoSql.getInstance().getConfig().getString("database.mysql.host") + ":" + PlayertoSql.getInstance().getConfig().getString("database.mysql.port") + "/" + dbname + "?autoReconnect=true&allowMultiQueries=true&rewriteBatchedStatements=true" + ssl;
try
{
connection = DriverManager.getConnection(server, username, password);
@@ -196,7 +194,8 @@ private void setupTables()
" (`uuid_player` CHAR(128) NOT NULL," +
"`name` CHAR(128) NOT NULL," +
"`last_login` DATE NOT NULL," +
- " PRIMARY KEY (`uuid_player`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;";
+ " PRIMARY KEY (`uuid_player`)) ENGINE = InnoDB DEFAULT CHARSET=utf8" +
+ " ROW_FORMAT = DYNAMIC ;";
query = connection.prepareStatement(data);
query.execute();
@@ -204,7 +203,8 @@ private void setupTables()
data = "CREATE TABLE IF NOT EXISTS " + dbname + "." + playerInventoryTableName + " " +
"(`uuid_player` CHAR(128) NOT NULL," +
"" + createInventoryQueryString() + "" +
- " PRIMARY KEY (`uuid_player`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;";
+ " PRIMARY KEY (`uuid_player`)) ENGINE = InnoDB DEFAULT CHARSET=utf8 " +
+ " ROW_FORMAT = DYNAMIC;";
query = connection.prepareStatement(data);
query.execute();
@@ -216,7 +216,8 @@ private void setupTables()
"`slot_02_id` LONGTEXT NULL," +
"`slot_03_id` LONGTEXT NULL," +
"`slot_04_id` LONGTEXT NULL," + //offhand
- " PRIMARY KEY (`uuid_player`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;";
+ " PRIMARY KEY (`uuid_player`)) ENGINE = InnoDB DEFAULT CHARSET=utf8" +
+ " ROW_FORMAT = DYNAMIC;";
query = connection.prepareStatement(data);
query.execute();
@@ -224,7 +225,8 @@ private void setupTables()
data = "CREATE TABLE IF NOT EXISTS " + dbname + "." + playerEnderChestTableName + " " +
"(`uuid_player` CHAR(128) NOT NULL," +
"" + createEnderQuery() + "" +
- " PRIMARY KEY (`uuid_player`)) ENGINE = InnoDB DEFAULT CHARSET=utf8;";
+ " PRIMARY KEY (`uuid_player`)) ENGINE = InnoDB DEFAULT CHARSET=utf8" +
+ " ROW_FORMAT = DYNAMIC;";
query = connection.prepareStatement(data);
query.execute();
diff --git a/src/pts/java/event/PlayerJoin.java b/src/pts/java/event/PlayerJoin.java
index 4446ac9..9add57b 100644
--- a/src/pts/java/event/PlayerJoin.java
+++ b/src/pts/java/event/PlayerJoin.java
@@ -8,7 +8,6 @@
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
-import pts.java.player.PlayerManager;
public class PlayerJoin implements Listener
{
diff --git a/src/pts/java/event/PlayerQuit.java b/src/pts/java/event/PlayerQuit.java
index 0957294..bf6deb3 100644
--- a/src/pts/java/event/PlayerQuit.java
+++ b/src/pts/java/event/PlayerQuit.java
@@ -17,11 +17,11 @@ public void onDisconnect(final PlayerQuitEvent event)
Player p = event.getPlayer();
//start async player save
ItemStack[] inv = p.getInventory().getStorageContents();
- ItemStack[] inva = p.getInventory().getArmorContents();
+ ItemStack[] inva = p.getInventory().getArmorContents();
ItemStack[] invae = p.getInventory().getExtraContents();
ItemStack[] inven = p.getEnderChest().getContents();
Bukkit.getScheduler().runTaskAsynchronously(PlayertoSql.getInstance(), () ->
- PlayertoSql.getInstance().getPlayerManager().savePlayer(p, inv,inva,invae ,inven ,false,"quitsave"));
+ PlayertoSql.getInstance().getPlayerManager().savePlayer(p, inv, inva, invae, inven, false, "quitsave"));
p.getInventory().clear();
}
}
diff --git a/src/pts/java/player/AutosaveManager.java b/src/pts/java/player/AutosaveManager.java
index 2214f43..a95b40e 100644
--- a/src/pts/java/player/AutosaveManager.java
+++ b/src/pts/java/player/AutosaveManager.java
@@ -5,9 +5,6 @@
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
-import java.util.ArrayList;
-import java.util.List;
-
public class AutosaveManager
{
PlayerManager pm;
@@ -16,7 +13,6 @@ public AutosaveManager()
{
//get playerManager
pm = PlayertoSql.getInstance().getPlayerManager();
-
//start autosave task
runTask();
}
@@ -39,39 +35,11 @@ private void autosave()
//check if player online
if (p != null && p.isOnline())
{
- pm.savePlayer(p, p.getInventory().getStorageContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(),false,"autosave");
+ pm.savePlayer(p, p.getInventory().getStorageContents(), p.getInventory().getArmorContents(), p.getInventory().getExtraContents(), p.getEnderChest().getContents(), false, "autosave");
}
}
}
//if all player saved try to save player unsaved player
PlayertoSql.getInstance().getPlayerManager().trySaveMissingPlayerData(false);
}
-
-
- /*
- public void onShutdownAutosave()
- {
- //get all player
- List onlinePlayers = new ArrayList<>(Bukkit.getOnlinePlayers());
-
- //for each player check if online and save
-
- for (Player p : onlinePlayers)
- {
- if (p.isOnline())
- {
- ItemStack[] inv = p.getInventory().getStorageContents();
- ItemStack[] inva = p.getInventory().getArmorContents();
- ItemStack[] invae = p.getInventory().getExtraContents();
- ItemStack[] inven = p.getEnderChest().getContents();
- pm.savePlayer(p, inv,inva,invae ,inven ,false,"autosaveSD");
- }
- else
- {
- PlayertoSql.getInstance().getLogger().warning("Player not auto saved! Player is offline");
- }
- }
- }
-
- */
}
diff --git a/src/pts/java/player/ItemManager.java b/src/pts/java/player/ItemManager.java
index 950e379..bb433c4 100644
--- a/src/pts/java/player/ItemManager.java
+++ b/src/pts/java/player/ItemManager.java
@@ -5,7 +5,6 @@
import org.bukkit.inventory.ItemStack;
import pts.java.PlayertoSql;
-import java.io.*;
import java.util.Objects;
public class ItemManager
diff --git a/src/pts/java/player/PlayerManager.java b/src/pts/java/player/PlayerManager.java
index f852492..f48f5e3 100644
--- a/src/pts/java/player/PlayerManager.java
+++ b/src/pts/java/player/PlayerManager.java
@@ -1,6 +1,5 @@
package pts.java.player;
-import org.bukkit.Bukkit;
import pts.java.ConfigManager;
import pts.java.PlayertoSql;
import pts.java.database.DatabaseManager;
@@ -16,7 +15,6 @@
import java.io.FileWriter;
import java.io.IOException;
import java.sql.ResultSet;
-import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Objects;
@@ -54,13 +52,13 @@ public void onPlayerJoin(Player p)
}
else
{
- PlayertoSql.getInstance().getLogger().info("Player not create! Create player disabled");
+ PlayertoSql.getInstance().getLogger().info(p.getName() + " not create! Create player disabled");
}
}
}
else
{
- PlayertoSql.getInstance().getLogger().warning("Player not create/load! Player is offline");
+ PlayertoSql.getInstance().getLogger().warning(p.getName() + " not create/load! Player is offline");
}
}
@@ -245,7 +243,7 @@ public void savePlayer(Player p, ItemStack[] inventory, ItemStack[] armor, ItemS
}
else
{
- PlayertoSql.getInstance().getLogger().info("Player could not be saved because it was not loaded!");
+ PlayertoSql.getInstance().getLogger().info(p.getName() + " could not be saved because it was not loaded!");
}
}
}