diff --git a/src/main/java/com/alttd/playershops/PlayerShops.java b/src/main/java/com/alttd/playershops/PlayerShops.java index badc757..c06cde7 100644 --- a/src/main/java/com/alttd/playershops/PlayerShops.java +++ b/src/main/java/com/alttd/playershops/PlayerShops.java @@ -34,6 +34,9 @@ public class PlayerShops extends JavaPlugin { private InventoryListener inventoryListener; private GriefPreventionListener griefPreventionListener; + @Getter + private DatabaseConfig databaseConfig; + public void onEnable() { instance = this; if(!setupEconomy()) { @@ -110,7 +113,8 @@ public class PlayerShops extends JavaPlugin { public void reloadConfigs() { Config.reload(); MessageConfig.reload(); - DatabaseConfig.reload(); + databaseConfig = new DatabaseConfig(Bukkit.getServerName()); + databaseConfig.reload(); for (ShopType shopType : ShopType.values()) { // preload ShopType to get the configs active diff --git a/src/main/java/com/alttd/playershops/config/Config.java b/src/main/java/com/alttd/playershops/config/Config.java index c05c2d1..aad8636 100644 --- a/src/main/java/com/alttd/playershops/config/Config.java +++ b/src/main/java/com/alttd/playershops/config/Config.java @@ -1,27 +1,162 @@ package com.alttd.playershops.config; -import com.alttd.galaxy.configuration.AbstractConfiguration; +import io.leangen.geantyref.TypeToken; +import org.spongepowered.configurate.ConfigurationNode; +import org.spongepowered.configurate.ConfigurationOptions; +import org.spongepowered.configurate.serialize.SerializationException; +import org.spongepowered.configurate.yaml.NodeStyle; +import org.spongepowered.configurate.yaml.YamlConfigurationLoader; import java.io.File; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; @SuppressWarnings("unused") -public class Config extends AbstractConfiguration { +public class Config { - public static File configPath = new File(System.getProperty("user.home") + File.separator + "share" + File.separator + "configs" + File.separator + "playershops"); - private Config() { - super(Config.configPath, "config"); - } + public static File CONFIG_PATH = new File(System.getProperty("user.home") + File.separator + "share" + File.separator + "configs" + File.separator + "playershops"); + public static final Pattern PATH_PATTERN = Pattern.compile("\\."); + private static final String HEADER = ""; + + private static File CONFIG_FILE; + public static ConfigurationNode config; + public static YamlConfigurationLoader configLoader; - static Config config; static int version; + static boolean verbose; public static void reload() { - config = new Config(); + CONFIG_FILE = new File(CONFIG_PATH, "config.yml"); - version = config.getInt("config-version", 1); - config.set("config-version", 1); + configLoader = YamlConfigurationLoader.builder() + .file(CONFIG_FILE) + .nodeStyle(NodeStyle.BLOCK) + .build(); + if (!CONFIG_FILE.getParentFile().exists()) { + if(!CONFIG_FILE.getParentFile().mkdirs()) { + return; + } + } + if (!CONFIG_FILE.exists()) { + try { + if(!CONFIG_FILE.createNewFile()) { + return; + } + } catch (IOException error) { + error.printStackTrace(); + } + } - config.readConfig(Config.class, null); + try { + config = configLoader.load(ConfigurationOptions.defaults().header(HEADER).shouldCopyDefaults(false)); + } catch (IOException e) { + e.printStackTrace(); + } + + verbose = getBoolean("verbose", true); + version = getInt("config-version", 1); + + readConfig(Config.class, null); + try { + configLoader.save(config); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void readConfig(Class clazz, Object instance) { + for (Method method : clazz.getDeclaredMethods()) { + if (Modifier.isPrivate(method.getModifiers())) { + if (method.getParameterTypes().length == 0 && method.getReturnType() == Void.TYPE) { + try { + method.setAccessible(true); + method.invoke(instance); + } catch (InvocationTargetException | IllegalAccessException ex) { + ex.printStackTrace(); + } + } + } + } + try { + configLoader.save(config); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + public static void saveConfig() { + try { + configLoader.save(config); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + private static Object[] splitPath(String key) { + return PATH_PATTERN.split(key); + } + + static void set(String path, Object def) { + if(config.node(splitPath(path)).virtual()) { + try { + config.node(splitPath(path)).set(def); + } catch (SerializationException e) { + e.printStackTrace(); + } + } + } + + private static void setString(String path, String def) { + try { + if(config.node(splitPath(path)).virtual()) + config.node(splitPath(path)).set(io.leangen.geantyref.TypeToken.get(String.class), def); + } catch(SerializationException ex) { + ex.printStackTrace(); + } + } + + private static boolean getBoolean(String path, boolean def) { + set(path, def); + return config.node(splitPath(path)).getBoolean(def); + } + + private static double getDouble(String path, double def) { + set(path, def); + return config.node(splitPath(path)).getDouble(def); + } + + private static int getInt(String path, int def) { + set(path, def); + return config.node(splitPath(path)).getInt(def); + } + + private static String getString(String path, String def) { + setString(path, def); + return config.node(splitPath(path)).getString(def); + } + + private static Long getLong(String path, Long def) { + set(path, def); + return config.node(splitPath(path)).getLong(def); + } + + private static List getList(String path, T def) { + try { + set(path, def); + return config.node(splitPath(path)).getList(TypeToken.get(String.class)); + } catch(SerializationException ex) { + ex.printStackTrace(); + } + return new ArrayList<>(); + } + + protected static ConfigurationNode getNode(String path) { + return config.node(splitPath(path)); } public static int shopLimit = 100; @@ -31,11 +166,11 @@ public class Config extends AbstractConfiguration { public static double shopCreationCost = 250; // minimum amount of balance to create a shop, this is to cover the cost to manage shops and upkeep private static void shopSettings() { String path = "shop-settings."; - shopLimit = config.getInt(path + "default-shop-limit", shopLimit); - usePermissionShopLimit = config.getBoolean(path + "use-permission-based-shop-limit", usePermissionShopLimit); - shopCreationWord = config.getString(path + "creation-word", shopCreationWord); - shopCreationBalance = config.getDouble(path + "creation-balance", shopCreationBalance); - shopCreationCost = config.getDouble(path + "creation-cost", shopCreationCost); + shopLimit = getInt(path + "default-shop-limit", shopLimit); + usePermissionShopLimit = getBoolean(path + "use-permission-based-shop-limit", usePermissionShopLimit); + shopCreationWord = getString(path + "creation-word", shopCreationWord); + shopCreationBalance = getDouble(path + "creation-balance", shopCreationBalance); + shopCreationCost = getDouble(path + "creation-cost", shopCreationCost); } } diff --git a/src/main/java/com/alttd/playershops/config/DatabaseConfig.java b/src/main/java/com/alttd/playershops/config/DatabaseConfig.java index 5777aa7..bfb4c54 100644 --- a/src/main/java/com/alttd/playershops/config/DatabaseConfig.java +++ b/src/main/java/com/alttd/playershops/config/DatabaseConfig.java @@ -1,49 +1,59 @@ package com.alttd.playershops.config; -import com.alttd.galaxy.configuration.AbstractConfiguration; -import com.alttd.playershops.shop.ShopType; +public class DatabaseConfig { -import java.util.HashMap; -public class DatabaseConfig extends AbstractConfiguration { - - private DatabaseConfig() { - super(Config.configPath, "database"); + private final String serverName; + private final String configPath; + private final String defaultPath; + public DatabaseConfig(String serverName) { + this.serverName = serverName; + this.configPath = "server." + this.serverName + "."; + this.defaultPath = "server.default."; + reload(); } - static DatabaseConfig config; - static int version; - - public static void reload() { - config = new DatabaseConfig(); - - version = config.getInt("config-version", 1); - config.set("config-version", 1); - - config.readConfig(DatabaseConfig.class, null); + public void reload() { + Config.readConfig(DatabaseConfig.class, this); } - public static String DRIVER = "mysql"; - public static String IP = "localhost"; - public static String PORT = "3306"; - public static String DATABASE_NAME = "PlayerShops"; - public static String USERNAME = "root"; - public static String PASSWORD = "root"; + private static void set(String path, Object def) { + Config.set(path, def); + } - private static void loadDatabase() { - DRIVER = config.getString("database.driver", DRIVER); - IP = config.getString("database.ip", IP); - PORT = config.getString("database.port", PORT); - DATABASE_NAME = config.getString("database.name", DATABASE_NAME); - USERNAME = config.getString("database.username", USERNAME); - PASSWORD = config.getString("database.password", PASSWORD); + private String getString(String path, String def) { + set(defaultPath + path, def); + return Config.getNode(configPath + path).getString( + Config.getNode(defaultPath + path).getString(def)); + } + + private int getInt(String path, int def) { + set(defaultPath + path, def); + return Config.getNode(configPath + path).getInt( + Config.getNode(defaultPath + path).getInt(def)); + } + + public String DRIVER = "mysql"; + public String IP = "localhost"; + public String PORT = "3306"; + public String DATABASE_NAME = "PlayerShops"; + public String USERNAME = "root"; + public String PASSWORD = "root"; + + private void loadDatabase() { + DRIVER = getString("database.driver", DRIVER); + IP = getString("database.ip", IP); + PORT = getString("database.port", PORT); + DATABASE_NAME = getString("database.name", DATABASE_NAME); + USERNAME = getString("database.username", USERNAME); + PASSWORD = getString("database.password", PASSWORD); } // Time in seconds between database tasks - public static int queueDelay = 5; - public static int maxDatabaseConnections = 10; - private static void databaseSettings() { - queueDelay = config.getInt("database.queue.delay" , queueDelay); - maxDatabaseConnections = config.getInt("database.maximum-connections" , maxDatabaseConnections); + public int queueDelay = 5; + public int maxDatabaseConnections = 10; + private void databaseSettings() { + queueDelay = getInt("database.queue.delay" , queueDelay); + maxDatabaseConnections = getInt("database.maximum-connections" , maxDatabaseConnections); } } diff --git a/src/main/java/com/alttd/playershops/config/GuiIconConfig.java b/src/main/java/com/alttd/playershops/config/GuiIconConfig.java index 592776c..42159c1 100644 --- a/src/main/java/com/alttd/playershops/config/GuiIconConfig.java +++ b/src/main/java/com/alttd/playershops/config/GuiIconConfig.java @@ -23,30 +23,30 @@ public class GuiIconConfig { static int version; public void init() { - Config.config.readConfig(GuiIconConfig.class, this); + Config.readConfig(GuiIconConfig.class, this); } private static void set(String path, Object def) { - Config.config.set(path, def); + Config.set(path, def); } private String getString(String path, String def) { set(defaultPath + path, def); - return Config.config.getNode(configPath + path).getString( - Config.config.getNode(defaultPath + path).getString(def)); + return Config.getNode(configPath + path).getString( + Config.getNode(defaultPath + path).getString(def)); } private int getInt(String path, int def) { set(defaultPath + path, def); - return Config.config.getNode(configPath + path).getInt( - Config.config.getNode(defaultPath + path).getInt(def)); + return Config.getNode(configPath + path).getInt( + Config.getNode(defaultPath + path).getInt(def)); } private List getStringList(String path, List def) { try { set(defaultPath + path, def); - return Config.config.getNode(configPath + path).getList(TypeToken.get(String.class), - Config.config.getNode(defaultPath + path).getList(TypeToken.get(String.class), def)); + return Config.getNode(configPath + path).getList(TypeToken.get(String.class), + Config.getNode(defaultPath + path).getList(TypeToken.get(String.class), def)); } catch(SerializationException ignore) {} return new ArrayList<>(); } diff --git a/src/main/java/com/alttd/playershops/config/MessageConfig.java b/src/main/java/com/alttd/playershops/config/MessageConfig.java index 749d9eb..d262450 100644 --- a/src/main/java/com/alttd/playershops/config/MessageConfig.java +++ b/src/main/java/com/alttd/playershops/config/MessageConfig.java @@ -1,24 +1,128 @@ package com.alttd.playershops.config; -import com.alttd.galaxy.configuration.AbstractConfiguration; +import io.leangen.geantyref.TypeToken; +import org.spongepowered.configurate.ConfigurationNode; +import org.spongepowered.configurate.ConfigurationOptions; +import org.spongepowered.configurate.serialize.SerializationException; +import org.spongepowered.configurate.yaml.NodeStyle; +import org.spongepowered.configurate.yaml.YamlConfigurationLoader; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; @SuppressWarnings("unused") -public class MessageConfig extends AbstractConfiguration { +public class MessageConfig { - public MessageConfig() { - super(Config.configPath, "messageconfig"); - } + private static final String HEADER = ""; + + private static File CONFIG_FILE; + public static ConfigurationNode config; + public static YamlConfigurationLoader configLoader; - static MessageConfig config; static int version; public static void reload() { - config = new MessageConfig(); + CONFIG_FILE = new File(Config.CONFIG_PATH, "messageconfig.yml"); - version = config.getInt("config-version", 1); - config.set("config-version", 1); + configLoader = YamlConfigurationLoader.builder() + .file(CONFIG_FILE) + .nodeStyle(NodeStyle.BLOCK) + .build(); + if (!CONFIG_FILE.getParentFile().exists()) { + if(!CONFIG_FILE.getParentFile().mkdirs()) { + return; + } + } + if (!CONFIG_FILE.exists()) { + try { + if(!CONFIG_FILE.createNewFile()) { + return; + } + } catch (IOException error) { + error.printStackTrace(); + } + } - config.readConfig(MessageConfig.class, null); + try { + config = configLoader.load(ConfigurationOptions.defaults().header(HEADER).shouldCopyDefaults(false)); + } catch (IOException e) { + e.printStackTrace(); + } + + Config.readConfig(MessageConfig.class, null); + try { + configLoader.save(config); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void saveConfig() { + try { + configLoader.save(config); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + private static Object[] splitPath(String key) { + return Config.PATH_PATTERN.split(key); + } + + private static void set(String path, Object def) { + if(config.node(splitPath(path)).virtual()) { + try { + config.node(splitPath(path)).set(def); + } catch (SerializationException e) { + e.printStackTrace(); + } + } + } + + private static void setString(String path, String def) { + try { + if(config.node(splitPath(path)).virtual()) + config.node(splitPath(path)).set(io.leangen.geantyref.TypeToken.get(String.class), def); + } catch(SerializationException ex) { + ex.printStackTrace(); + } + } + + private static boolean getBoolean(String path, boolean def) { + set(path, def); + return config.node(splitPath(path)).getBoolean(def); + } + + private static double getDouble(String path, double def) { + set(path, def); + return config.node(splitPath(path)).getDouble(def); + } + + private static int getInt(String path, int def) { + set(path, def); + return config.node(splitPath(path)).getInt(def); + } + + private static String getString(String path, String def) { + setString(path, def); + return config.node(splitPath(path)).getString(def); + } + + private static Long getLong(String path, Long def) { + set(path, def); + return config.node(splitPath(path)).getLong(def); + } + + private static List getList(String path, T def) { + try { + set(path, def); + return config.node(splitPath(path)).getList(TypeToken.get(String.class)); + } catch(SerializationException ex) { + ex.printStackTrace(); + } + return new ArrayList<>(); } public static String SHOP_ALREADY_EXISTS = "This block is already a Shop"; @@ -29,19 +133,19 @@ public class MessageConfig extends AbstractConfiguration { public static String NO_PERMISSION_FOR_SHOP_TYPE = "You do not have permission to use shops."; private static void loadErrorMessages() { - SHOP_ALREADY_EXISTS = config.getString("errors.shop-already-exists", SHOP_ALREADY_EXISTS); - NO_SHOP_CREATE_PERMISSION = config.getString("errors.no-shop-create-permission", NO_SHOP_CREATE_PERMISSION); - SHOP_LIMIT_REACHED = config.getString("errors.shop-limit-reached", SHOP_LIMIT_REACHED); - BREAK_SHOP_WHILE_CONVERSING = config.getString("errors.break-shop-while-conversing", BREAK_SHOP_WHILE_CONVERSING); - INSUFFICIENT_FUNDS = config.getString("errors.insufficient-funds", INSUFFICIENT_FUNDS); - NO_PERMISSION_FOR_SHOP_TYPE = config.getString("permissions-messages.shop-type", NO_PERMISSION_FOR_SHOP_TYPE); + SHOP_ALREADY_EXISTS = getString("errors.shop-already-exists", SHOP_ALREADY_EXISTS); + NO_SHOP_CREATE_PERMISSION = getString("errors.no-shop-create-permission", NO_SHOP_CREATE_PERMISSION); + SHOP_LIMIT_REACHED = getString("errors.shop-limit-reached", SHOP_LIMIT_REACHED); + BREAK_SHOP_WHILE_CONVERSING = getString("errors.break-shop-while-conversing", BREAK_SHOP_WHILE_CONVERSING); + INSUFFICIENT_FUNDS = getString("errors.insufficient-funds", INSUFFICIENT_FUNDS); + NO_PERMISSION_FOR_SHOP_TYPE = getString("permissions-messages.shop-type", NO_PERMISSION_FOR_SHOP_TYPE); } public static String SHOP_INFO = "This shop for ."; public static String SHOP_STOCK_INFO = "This shop has stock."; private static void otherMessages() { - SHOP_INFO = config.getString("messages.shop-info", SHOP_INFO); - SHOP_STOCK_INFO = config.getString("messages.shop-stock-info", SHOP_STOCK_INFO); + SHOP_INFO = getString("messages.shop-info", SHOP_INFO); + SHOP_STOCK_INFO = getString("messages.shop-stock-info", SHOP_STOCK_INFO); } public static String CHANGE_PRICE_PROMPT = "What should the price be? Type cancel to cancel this action."; @@ -54,15 +158,15 @@ public class MessageConfig extends AbstractConfiguration { public static String WITHDRAW_BALANCE_FAILED_PROMPT = "Your shop does not have enough balance to withdraw this amount. Type cancel to cancel this action."; public static String CHANGE_ITEM_PROMPT = "Hold the item you would like to sell and type continue. Type cancel to cancel this action."; private static void promptMessages() { - CHANGE_PRICE_PROMPT = config.getString("prompt.change-price", CHANGE_PRICE_PROMPT); - CHANGE_PRICE_FAILED_PROMPT = config.getString("prompt.change-price-failed", CHANGE_PRICE_FAILED_PROMPT); - CHANGE_AMOUNT_PROMPT = config.getString("prompt.change-amount", CHANGE_AMOUNT_PROMPT); - CHANGE_AMOUNT_FAILED_PROMPT = config.getString("prompt.change-amount-failed", CHANGE_AMOUNT_FAILED_PROMPT); - ADD_BALANCE_PROMPT = config.getString("prompt.add-balance", ADD_BALANCE_PROMPT); - ADD_BALANCE_FAILED_PROMPT = config.getString("prompt.add-balance-failed", ADD_BALANCE_FAILED_PROMPT); - WITHDRAW_BALANCE_PROMPT = config.getString("prompt.withdraw-balance", WITHDRAW_BALANCE_PROMPT); - WITHDRAW_BALANCE_FAILED_PROMPT = config.getString("prompt.withdraw-balance-failed", WITHDRAW_BALANCE_FAILED_PROMPT); - CHANGE_ITEM_PROMPT = config.getString("prompt.change-item",CHANGE_ITEM_PROMPT ); + CHANGE_PRICE_PROMPT = getString("prompt.change-price", CHANGE_PRICE_PROMPT); + CHANGE_PRICE_FAILED_PROMPT = getString("prompt.change-price-failed", CHANGE_PRICE_FAILED_PROMPT); + CHANGE_AMOUNT_PROMPT = getString("prompt.change-amount", CHANGE_AMOUNT_PROMPT); + CHANGE_AMOUNT_FAILED_PROMPT = getString("prompt.change-amount-failed", CHANGE_AMOUNT_FAILED_PROMPT); + ADD_BALANCE_PROMPT = getString("prompt.add-balance", ADD_BALANCE_PROMPT); + ADD_BALANCE_FAILED_PROMPT = getString("prompt.add-balance-failed", ADD_BALANCE_FAILED_PROMPT); + WITHDRAW_BALANCE_PROMPT = getString("prompt.withdraw-balance", WITHDRAW_BALANCE_PROMPT); + WITHDRAW_BALANCE_FAILED_PROMPT = getString("prompt.withdraw-balance-failed", WITHDRAW_BALANCE_FAILED_PROMPT); + CHANGE_ITEM_PROMPT = getString("prompt.change-item",CHANGE_ITEM_PROMPT ); } public static String GUI_HOME_TITLE = "PlayerShops"; @@ -72,12 +176,12 @@ public class MessageConfig extends AbstractConfiguration { public static String GUI_MANAGE_TITLE = "Shop Manager"; public static String GUI_PLAYER_SETTINGS_TITLE = "Shop Settings Manager"; private static void guiTitles() { - GUI_HOME_TITLE = config.getString("gui.home-title", GUI_HOME_TITLE); - GUI_LIST_PLAYERS_TITLE = config.getString("gui.list-players-title", GUI_LIST_PLAYERS_TITLE); - GUI_LIST_SHOPS_TITLE = config.getString("gui.list-shops-title", GUI_LIST_SHOPS_TITLE); - GUI_LIST_TRANSACTIONS_TITLE = config.getString("gui.list-transactions-title", GUI_LIST_TRANSACTIONS_TITLE); - GUI_MANAGE_TITLE = config.getString("gui.manage-title", GUI_MANAGE_TITLE); - GUI_PLAYER_SETTINGS_TITLE = config.getString("gui.player-settings-title", GUI_PLAYER_SETTINGS_TITLE); + GUI_HOME_TITLE = getString("gui.home-title", GUI_HOME_TITLE); + GUI_LIST_PLAYERS_TITLE = getString("gui.list-players-title", GUI_LIST_PLAYERS_TITLE); + GUI_LIST_SHOPS_TITLE = getString("gui.list-shops-title", GUI_LIST_SHOPS_TITLE); + GUI_LIST_TRANSACTIONS_TITLE = getString("gui.list-transactions-title", GUI_LIST_TRANSACTIONS_TITLE); + GUI_MANAGE_TITLE = getString("gui.manage-title", GUI_MANAGE_TITLE); + GUI_PLAYER_SETTINGS_TITLE = getString("gui.player-settings-title", GUI_PLAYER_SETTINGS_TITLE); } } diff --git a/src/main/java/com/alttd/playershops/config/ShopTypeConfig.java b/src/main/java/com/alttd/playershops/config/ShopTypeConfig.java index 6bba796..96d6c7d 100644 --- a/src/main/java/com/alttd/playershops/config/ShopTypeConfig.java +++ b/src/main/java/com/alttd/playershops/config/ShopTypeConfig.java @@ -20,24 +20,24 @@ public class ShopTypeConfig { } public void init() { - Config.config.readConfig(ShopTypeConfig.class, this); + Config.readConfig(ShopTypeConfig.class, this); } private static void set(String path, Object def) { - Config.config.set(path, def); + Config.set(path, def); } private String getString(String path, String def) { set(defaultPath + path, def); - return Config.config.getNode(configPath + path).getString( - Config.config.getNode(defaultPath + path).getString(def)); + return Config.getNode(configPath + path).getString( + Config.getNode(defaultPath + path).getString(def)); } private List getStringList(String path, List def) { try { set(defaultPath + path, def); - return Config.config.getNode(configPath + path).getList(TypeToken.get(String.class), - Config.config.getNode(defaultPath + path).getList(TypeToken.get(String.class), def)); + return Config.getNode(configPath + path).getList(TypeToken.get(String.class), + Config.getNode(defaultPath + path).getList(TypeToken.get(String.class), def)); } catch(SerializationException ignore) {} return new ArrayList<>(); } diff --git a/src/main/java/com/alttd/playershops/shop/PlayerSettings.java b/src/main/java/com/alttd/playershops/shop/PlayerSettings.java index dbf8d80..898f37b 100644 --- a/src/main/java/com/alttd/playershops/shop/PlayerSettings.java +++ b/src/main/java/com/alttd/playershops/shop/PlayerSettings.java @@ -4,10 +4,8 @@ import com.alttd.playershops.config.Config; import it.unimi.dsi.fastutil.objects.Object2BooleanMap; import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap; import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.entity.Player; import java.io.File; -import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -51,7 +49,7 @@ public class PlayerSettings { private void saveToFile() { try { - File settingsDirectory = new File(Config.configPath, "PlayerSettings"); + File settingsDirectory = new File(Config.CONFIG_PATH, "PlayerSettings"); if (!settingsDirectory.exists() && !settingsDirectory.mkdir()) { return; } @@ -76,7 +74,7 @@ public class PlayerSettings { } public static PlayerSettings loadFromFile(UUID uuid) { - File settingsDirectory = new File(Config.configPath, "PlayerSettings"); + File settingsDirectory = new File(Config.CONFIG_PATH, "PlayerSettings"); if (!settingsDirectory.exists() && !settingsDirectory.mkdir()) { return null; // could not create directory } diff --git a/src/main/java/com/alttd/playershops/storage/database/DatabaseConnection.java b/src/main/java/com/alttd/playershops/storage/database/DatabaseConnection.java index 747eb30..aff5ddd 100644 --- a/src/main/java/com/alttd/playershops/storage/database/DatabaseConnection.java +++ b/src/main/java/com/alttd/playershops/storage/database/DatabaseConnection.java @@ -1,5 +1,6 @@ package com.alttd.playershops.storage.database; +import com.alttd.playershops.PlayerShops; import com.alttd.playershops.config.DatabaseConfig; import java.sql.Connection; @@ -9,8 +10,10 @@ import java.sql.SQLException; public class DatabaseConnection implements AutoCloseable { private Connection connection; private volatile boolean isActive; + PlayerShops playerShops; - public DatabaseConnection() { + public DatabaseConnection(PlayerShops playerShops) { + this.playerShops = playerShops; try { openConnection(); } catch (SQLException e) { @@ -34,9 +37,9 @@ public class DatabaseConnection implements AutoCloseable { } connection = DriverManager.getConnection( - "jdbc:mysql://" + DatabaseConfig.IP + ":" + DatabaseConfig.PORT + "/" + DatabaseConfig.DATABASE_NAME + + "jdbc:mysql://" + playerShops.getDatabaseConfig().IP + ":" + playerShops.getDatabaseConfig().PORT + "/" + playerShops.getDatabaseConfig().DATABASE_NAME + "?autoReconnect=true&useSSL=false", - DatabaseConfig.USERNAME, DatabaseConfig.PASSWORD); + playerShops.getDatabaseConfig().USERNAME, playerShops.getDatabaseConfig().PASSWORD); } } diff --git a/src/main/java/com/alttd/playershops/storage/database/DatabaseManager.java b/src/main/java/com/alttd/playershops/storage/database/DatabaseManager.java index 4a2cd81..e007443 100644 --- a/src/main/java/com/alttd/playershops/storage/database/DatabaseManager.java +++ b/src/main/java/com/alttd/playershops/storage/database/DatabaseManager.java @@ -14,21 +14,23 @@ import java.util.List; public class DatabaseManager { + PlayerShops playerShops; DatabaseQueue databaseQueue; private final List CONNECTIONPOOL = new ArrayList<>(); public DatabaseManager(PlayerShops playerShops) { + this.playerShops = playerShops; databaseQueue = new DatabaseQueue(this); - int delay = DatabaseConfig.queueDelay * 20; + int delay = playerShops.getDatabaseConfig().queueDelay * 20; databaseQueue.runTaskTimerAsynchronously(playerShops, delay, delay); // preload out database connections, TODO FIND A BETTER WAY TO LIMIT THIS - for (int i = 1; i < DatabaseConfig.maxDatabaseConnections; i++) { + for (int i = 1; i < playerShops.getDatabaseConfig().maxDatabaseConnections; i++) { CONNECTIONPOOL.add(null); } } public DatabaseConnection getDatabaseConnection() { - for (int i = 0; i < DatabaseConfig.maxDatabaseConnections; i++) { + for (int i = 0; i < playerShops.getDatabaseConfig().maxDatabaseConnections; i++) { DatabaseConnection connection = CONNECTIONPOOL.get(i); if (connection == null) { return generateDatabaseConnection(i); @@ -47,7 +49,7 @@ public class DatabaseManager { } private DatabaseConnection generateDatabaseConnection(int index) { - DatabaseConnection connection = new DatabaseConnection(); + DatabaseConnection connection = new DatabaseConnection(playerShops); CONNECTIONPOOL.set(index, connection); return connection;