Improve debug, and other informative messages

This commit is contained in:
CmdrKittens
2020-04-09 01:54:32 -04:00
parent 6d95eadf78
commit 2e4fef70d9
3 changed files with 58 additions and 29 deletions
@@ -93,52 +93,61 @@ public class PlayerVaults extends JavaPlugin {
} }
public static void debug(String s, long start) { public static void debug(String s, long start) {
long elapsed = System.currentTimeMillis() - start; if (DEBUG) {
if (DEBUG || elapsed > 4) { instance.getLogger().log(Level.INFO, "{0} took {1}ms", new Object[]{s, (System.currentTimeMillis() - start)});
Bukkit.getLogger().log(Level.INFO, "At {0}. Time since start: {1}ms", new Object[]{s, (elapsed)});
} }
} }
public static void debug(String s) { public static void debug(String s) {
if (DEBUG) { if (DEBUG) {
Bukkit.getLogger().log(Level.INFO, s); instance.getLogger().log(Level.INFO, s);
} }
} }
@Override @Override
public void onEnable() { public void onEnable() {
instance = this; instance = this;
long start = System.currentTimeMillis();
long time = System.currentTimeMillis();
loadConfig(); loadConfig();
DEBUG = getConf().isDebug(); DEBUG = getConf().isDebug();
debug("config", System.currentTimeMillis()); debug("config", time);
time = System.currentTimeMillis();
uuidData = new File(this.getDataFolder(), "uuidvaults"); uuidData = new File(this.getDataFolder(), "uuidvaults");
vaultData = new File(this.getDataFolder(), "base64vaults"); vaultData = new File(this.getDataFolder(), "base64vaults");
debug("vaultdata", System.currentTimeMillis()); debug("vaultdata", time);
time = System.currentTimeMillis();
getServer().getScheduler().runTask(this, new UUIDConversion()); // Convert to UUIDs first. Class checks if necessary. getServer().getScheduler().runTask(this, new UUIDConversion()); // Convert to UUIDs first. Class checks if necessary.
debug("uuid conversion", System.currentTimeMillis()); debug("uuid conversion", time);
time = System.currentTimeMillis();
new VaultManager(); new VaultManager();
getServer().getScheduler().runTask(this, new Base64Conversion()); getServer().getScheduler().runTask(this, new Base64Conversion());
debug("base64 conversion", System.currentTimeMillis()); debug("base64 conversion", time);
time = System.currentTimeMillis();
loadLang(); loadLang();
debug("lang", System.currentTimeMillis()); debug("lang", time);
time = System.currentTimeMillis();
new UUIDVaultManager(); new UUIDVaultManager();
debug("uuidvaultmanager", System.currentTimeMillis()); debug("uuidvaultmanager", time);
time = System.currentTimeMillis();
getServer().getPluginManager().registerEvents(new Listeners(this), this); getServer().getPluginManager().registerEvents(new Listeners(this), this);
getServer().getPluginManager().registerEvents(new VaultPreloadListener(), this); getServer().getPluginManager().registerEvents(new VaultPreloadListener(), this);
getServer().getPluginManager().registerEvents(new SignListener(this), this); getServer().getPluginManager().registerEvents(new SignListener(this), this);
debug("registering listeners", System.currentTimeMillis()); debug("registering listeners", time);
time = System.currentTimeMillis();
this.backupsEnabled = this.getConf().getStorage().getFlatFile().isBackups(); this.backupsEnabled = this.getConf().getStorage().getFlatFile().isBackups();
this.maxVaultAmountPermTest = this.getConf().getMaxVaultAmountPermTest(); this.maxVaultAmountPermTest = this.getConf().getMaxVaultAmountPermTest();
loadSigns(); loadSigns();
debug("loaded signs", System.currentTimeMillis()); debug("loaded signs", time);
debug("check update", System.currentTimeMillis()); time = System.currentTimeMillis();
getCommand("pv").setExecutor(new VaultCommand()); getCommand("pv").setExecutor(new VaultCommand());
getCommand("pvdel").setExecutor(new DeleteCommand()); getCommand("pvdel").setExecutor(new DeleteCommand());
getCommand("pvconvert").setExecutor(new ConvertCommand()); getCommand("pvconvert").setExecutor(new ConvertCommand());
getCommand("pvsign").setExecutor(new SignCommand()); getCommand("pvsign").setExecutor(new SignCommand());
debug("registered commands", System.currentTimeMillis()); debug("registered commands", time);
time = System.currentTimeMillis();
useVault = setupEconomy(); useVault = setupEconomy();
debug("setup economy", System.currentTimeMillis()); debug("setup economy", time);
if (getConf().getPurge().isEnabled()) { if (getConf().getPurge().isEnabled()) {
getServer().getScheduler().runTaskAsynchronously(this, new Cleanup(getConf().getPurge().getDaysSinceLastEdit())); getServer().getScheduler().runTaskAsynchronously(this, new Cleanup(getConf().getPurge().getDaysSinceLastEdit()));
@@ -223,7 +232,7 @@ public class PlayerVaults extends JavaPlugin {
return map; return map;
}); });
debug("enable done", System.currentTimeMillis()); this.getLogger().info("Loaded! Took " + (System.currentTimeMillis() - start) + "ms");
} }
private void metricsLine(String name, Callable<Integer> callable) { private void metricsLine(String name, Callable<Integer> callable) {
@@ -525,7 +534,7 @@ public class PlayerVaults extends JavaPlugin {
public int getDefaultVaultRows() { public int getDefaultVaultRows() {
int def = this.config.getDefaultVaultRows(); int def = this.config.getDefaultVaultRows();
return (def >= 1 && def <=6) ? def : 6; return (def >= 1 && def <= 6) ? def : 6;
} }
public int getDefaultVaultSize() { public int getDefaultVaultSize() {
@@ -29,6 +29,7 @@ import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.util.logging.Level;
/** /**
* Created by Lax on 6/6/2017. * Created by Lax on 6/6/2017.
@@ -36,6 +37,10 @@ import java.io.ByteArrayOutputStream;
public class Base64Serialization { public class Base64Serialization {
public static String toBase64(Inventory inventory, int size) { public static String toBase64(Inventory inventory, int size) {
return toBase64(inventory, size, null);
}
public static String toBase64(Inventory inventory, int size, String target) {
try { try {
ByteArrayOutputStream finalOutputStream = new ByteArrayOutputStream(); ByteArrayOutputStream finalOutputStream = new ByteArrayOutputStream();
ByteArrayOutputStream temporaryOutputStream = new ByteArrayOutputStream(); ByteArrayOutputStream temporaryOutputStream = new ByteArrayOutputStream();
@@ -62,7 +67,7 @@ public class Base64Serialization {
} }
if (failedItems > 0) { if (failedItems > 0) {
PlayerVaults.getInstance().getLogger().severe("Failed to save " + failedItems + " invalid items to vault"); PlayerVaults.getInstance().getLogger().severe("Failed to save " + failedItems + " invalid items to vault " + target);
} }
// Serialize that array // Serialize that array
@@ -80,6 +85,10 @@ public class Base64Serialization {
} }
public static Inventory fromBase64(String data) { public static Inventory fromBase64(String data) {
return fromBase64(data, null);
}
public static Inventory fromBase64(String data, String target) {
try { try {
ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data)); ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream); BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);
@@ -91,6 +100,7 @@ public class Base64Serialization {
dataInput.close(); dataInput.close();
return inventory; return inventory;
} catch (Exception e) { } catch (Exception e) {
PlayerVaults.getInstance().getLogger().log(Level.SEVERE, "Failed to load vault " + target, e);
} }
return null; return null;
} }
@@ -69,7 +69,7 @@ public class VaultManager {
public void saveVault(Inventory inventory, String target, int number) { public void saveVault(Inventory inventory, String target, int number) {
YamlConfiguration yaml = getPlayerVaultFile(target, true); YamlConfiguration yaml = getPlayerVaultFile(target, true);
int size = VaultOperations.getMaxVaultSize(target); int size = VaultOperations.getMaxVaultSize(target);
String serialized = Base64Serialization.toBase64(inventory, size); String serialized = Base64Serialization.toBase64(inventory, size, target);
yaml.set(String.format(VAULTKEY, number), serialized); yaml.set(String.format(VAULTKEY, number), serialized);
saveFileSync(target, yaml); saveFileSync(target, yaml);
} }
@@ -85,20 +85,24 @@ public class VaultManager {
size = PlayerVaults.getInstance().getDefaultVaultSize(); size = PlayerVaults.getInstance().getDefaultVaultSize();
} }
PlayerVaults.debug("Loading self vault for " + player.getName() + " (" + player.getUniqueId() + ')');
String title = Lang.VAULT_TITLE.toString().replace("%number", String.valueOf(number)).replace("%p", player.getName()); String title = Lang.VAULT_TITLE.toString().replace("%number", String.valueOf(number)).replace("%p", player.getName());
VaultViewInfo info = new VaultViewInfo(player.getUniqueId().toString(), number); VaultViewInfo info = new VaultViewInfo(player.getUniqueId().toString(), number);
if (PlayerVaults.getInstance().getOpenInventories().containsKey(info.toString())) { if (PlayerVaults.getInstance().getOpenInventories().containsKey(info.toString())) {
PlayerVaults.debug("Already open");
return PlayerVaults.getInstance().getOpenInventories().get(info.toString()); return PlayerVaults.getInstance().getOpenInventories().get(info.toString());
} }
YamlConfiguration playerFile = getPlayerVaultFile(player.getUniqueId().toString(), true); YamlConfiguration playerFile = getPlayerVaultFile(player.getUniqueId().toString(), true);
VaultHolder vaultHolder = new VaultHolder(number); VaultHolder vaultHolder = new VaultHolder(number);
if (playerFile.getString(String.format(VAULTKEY, number)) == null) { if (playerFile.getString(String.format(VAULTKEY, number)) == null) {
PlayerVaults.debug("No vault matching number");
Inventory inv = Bukkit.createInventory(vaultHolder, size, title); Inventory inv = Bukkit.createInventory(vaultHolder, size, title);
vaultHolder.setInventory(inv); vaultHolder.setInventory(inv);
return inv; return inv;
} else { } else {
return getInventory(vaultHolder, playerFile, size, number, title); return getInventory(vaultHolder, player.getUniqueId().toString(), playerFile, size, number, title);
} }
} }
@@ -113,6 +117,8 @@ public class VaultManager {
size = PlayerVaults.getInstance().getDefaultVaultSize(); size = PlayerVaults.getInstance().getDefaultVaultSize();
} }
PlayerVaults.debug("Loading other vault for " + name);
String holder = name; String holder = name;
try { try {
@@ -128,10 +134,11 @@ public class VaultManager {
Inventory inv; Inventory inv;
VaultHolder vaultHolder = new VaultHolder(number); VaultHolder vaultHolder = new VaultHolder(number);
if (PlayerVaults.getInstance().getOpenInventories().containsKey(info.toString())) { if (PlayerVaults.getInstance().getOpenInventories().containsKey(info.toString())) {
PlayerVaults.debug("Already open");
inv = PlayerVaults.getInstance().getOpenInventories().get(info.toString()); inv = PlayerVaults.getInstance().getOpenInventories().get(info.toString());
} else { } else {
YamlConfiguration playerFile = getPlayerVaultFile(holder, true); YamlConfiguration playerFile = getPlayerVaultFile(holder, true);
Inventory i = getInventory(vaultHolder, playerFile, size, number, title); Inventory i = getInventory(vaultHolder, holder, playerFile, size, number, title);
if (i == null) { if (i == null) {
return null; return null;
} else { } else {
@@ -150,12 +157,13 @@ public class VaultManager {
* @param number the vault number. * @param number the vault number.
* @return inventory if exists, otherwise null. * @return inventory if exists, otherwise null.
*/ */
private Inventory getInventory(InventoryHolder owner, YamlConfiguration playerFile, int size, int number, String title) { private Inventory getInventory(InventoryHolder owner, String ownerName, YamlConfiguration playerFile, int size, int number, String title) {
Inventory inventory = Bukkit.createInventory(owner, size, title); Inventory inventory = Bukkit.createInventory(owner, size, title);
String data = playerFile.getString(String.format(VAULTKEY, number)); String data = playerFile.getString(String.format(VAULTKEY, number));
Inventory deserialized = Base64Serialization.fromBase64(data); Inventory deserialized = Base64Serialization.fromBase64(data, ownerName);
if (deserialized == null) { if (deserialized == null) {
PlayerVaults.debug("Loaded vault as null");
return inventory; return inventory;
} }
@@ -172,6 +180,7 @@ public class VaultManager {
inventory.setContents(deserialized.getContents()); inventory.setContents(deserialized.getContents());
} }
PlayerVaults.debug("Loaded vault");
return inventory; return inventory;
} }
@@ -185,7 +194,7 @@ public class VaultManager {
public Inventory getVault(String holder, int number) { public Inventory getVault(String holder, int number) {
YamlConfiguration playerFile = getPlayerVaultFile(holder, true); YamlConfiguration playerFile = getPlayerVaultFile(holder, true);
String serialized = playerFile.getString(String.format(VAULTKEY, number)); String serialized = playerFile.getString(String.format(VAULTKEY, number));
return Base64Serialization.fromBase64(serialized); return Base64Serialization.fromBase64(serialized, holder);
} }
/** /**
@@ -359,5 +368,6 @@ public class VaultManager {
} catch (IOException e) { } catch (IOException e) {
PlayerVaults.getInstance().getLogger().log(Level.SEVERE, "Failed to save vault file for: " + holder, e); PlayerVaults.getInstance().getLogger().log(Level.SEVERE, "Failed to save vault file for: " + holder, e);
} }
PlayerVaults.debug("Saved vault for " + holder);
} }
} }