From d41c930461984b811ce541608a3cfff236821a79 Mon Sep 17 00:00:00 2001 From: Kiran Hart Date: Tue, 13 Aug 2019 10:14:58 -0400 Subject: [PATCH] Bug Snipping --- pom.xml | 6 ++ .../java/com/kiranhart/auctionhouse/Core.java | 30 +++++++++ .../api/statics/AuctionSettings.java | 14 +++- .../auctionhouse/auction/AuctionPlayer.java | 2 +- .../cmds/subcommands/ExpiredCommand.java | 3 +- .../cmds/subcommands/ListedCommand.java | 2 +- .../cmds/subcommands/TransactionsCommand.java | 2 +- .../inventory/inventories/AuctionGUI.java | 18 ++--- .../auctionhouse/util/storage/Database.java | 66 +++++++++++++++++++ .../util/tasks/SaveTransactionTask.java | 4 +- .../util/tasks/TickAuctionsTask.java | 20 +++--- src/main/resources/config.yml | 4 +- 12 files changed, 144 insertions(+), 27 deletions(-) create mode 100644 src/main/java/com/kiranhart/auctionhouse/util/storage/Database.java diff --git a/pom.xml b/pom.xml index bbf0895..2684de1 100644 --- a/pom.xml +++ b/pom.xml @@ -89,5 +89,11 @@ 1.7 provided + + com.zaxxer + HikariCP + LATEST + compile + diff --git a/src/main/java/com/kiranhart/auctionhouse/Core.java b/src/main/java/com/kiranhart/auctionhouse/Core.java index bba16f0..0a7d946 100644 --- a/src/main/java/com/kiranhart/auctionhouse/Core.java +++ b/src/main/java/com/kiranhart/auctionhouse/Core.java @@ -12,6 +12,7 @@ import com.kiranhart.auctionhouse.util.locale.Locale; import com.kiranhart.auctionhouse.util.storage.ConfigWrapper; import com.kiranhart.auctionhouse.util.tasks.LoadAuctionsTask; import com.kiranhart.auctionhouse.util.tasks.TickAuctionsTask; +import com.zaxxer.hikari.HikariDataSource; import org.apache.commons.lang.ArrayUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -40,6 +41,9 @@ public final class Core extends JavaPlugin { private ConfigWrapper transactions; private ConfigWrapper data; + private HikariDataSource hikari; + private boolean dbConnected; + @Override public void onEnable() { @@ -55,6 +59,7 @@ public final class Core extends JavaPlugin { console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&6AuctionHouse&8]&a Initializing instance")); instance = this; + dbConnected = false; console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&6AuctionHouse&8]&a Checking server version")); serverVersion = ServerVersion.fromPackageName(Bukkit.getServer().getClass().getPackage().getName()); @@ -89,6 +94,22 @@ public final class Core extends JavaPlugin { commandManager = new CommandManager(); commandManager.initialize(); + //Database + if (AuctionSettings.DB_ENABLED) { + hikari = new HikariDataSource(); + hikari.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); + hikari.addDataSourceProperty("serverName", AuctionSettings.DB_HOST); + hikari.addDataSourceProperty("port", AuctionSettings.DB_PORT); + hikari.addDataSourceProperty("databaseName", AuctionSettings.DB_NAME); + hikari.addDataSourceProperty("user", AuctionSettings.DB_USERNAME); + hikari.addDataSourceProperty("password", AuctionSettings.DB_PASSWORD); + + if (!hikari.isClosed()) { + dbConnected = true; + console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&6AuctionHouse&8]&a Connected to database!")); + } + } + //Listeners pm.registerEvents(new AGUIListener(), this); @@ -101,6 +122,8 @@ public final class Core extends JavaPlugin { console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&aLoaded successfully in " + (System.currentTimeMillis() - start) + "ms")); console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6=========================================")); + //Database.getInstance().performTableCreation(Database.Tables.TRANSACTIONS); + //Begin Auction Tick TickAuctionsTask.startTask(this); } @@ -127,6 +150,9 @@ public final class Core extends JavaPlugin { index++; } getData().saveConfig(); + + if (hikari != null) + hikari.close(); } private void initDataFiles() { @@ -172,6 +198,10 @@ public final class Core extends JavaPlugin { return transactions; } + public HikariDataSource getHikari() { + return hikari; + } + public CommandManager getCommandManager() { return commandManager; } diff --git a/src/main/java/com/kiranhart/auctionhouse/api/statics/AuctionSettings.java b/src/main/java/com/kiranhart/auctionhouse/api/statics/AuctionSettings.java index 115ce0d..f877616 100644 --- a/src/main/java/com/kiranhart/auctionhouse/api/statics/AuctionSettings.java +++ b/src/main/java/com/kiranhart/auctionhouse/api/statics/AuctionSettings.java @@ -30,8 +30,13 @@ public class AuctionSettings { public static int TIME_TO_INCREASE_BY_BID = 10; public static int DECREASE_SECONDS_BY_TICK = 5; public static int UPDATE_EVERY_TICK = 5; - + public static boolean DB_ENABLED = false; + public static String DB_HOST = "localhost"; + public static int DB_PORT = 3306; + public static String DB_NAME = "auctionhouse"; + public static String DB_USERNAME = "root"; + public static String DB_PASSWORD = ""; public AuctionSettings () { DEFAULT_AUCTION_TIME = Core.getInstance().getConfig().getInt("settings.default-auction-time"); @@ -52,5 +57,12 @@ public class AuctionSettings { TIME_TO_INCREASE_BY_BID = Core.getInstance().getConfig().getInt("settings.time-to-increase-by-bid"); DECREASE_SECONDS_BY_TICK = Core.getInstance().getConfig().getInt("settings.decrease-seconds-by-tick"); UPDATE_EVERY_TICK = Core.getInstance().getConfig().getInt("settings.update-every-tick"); + + DB_ENABLED = Core.getInstance().getConfig().getBoolean("database.enabled"); + DB_HOST = Core.getInstance().getConfig().getString("database.host"); + DB_PORT = Core.getInstance().getConfig().getInt("database.port"); + DB_NAME = Core.getInstance().getConfig().getString("database.name"); + DB_USERNAME = Core.getInstance().getConfig().getString("database.username"); + DB_PASSWORD = Core.getInstance().getConfig().getString("database.password"); } } diff --git a/src/main/java/com/kiranhart/auctionhouse/auction/AuctionPlayer.java b/src/main/java/com/kiranhart/auctionhouse/auction/AuctionPlayer.java index a8a1240..cd3f640 100644 --- a/src/main/java/com/kiranhart/auctionhouse/auction/AuctionPlayer.java +++ b/src/main/java/com/kiranhart/auctionhouse/auction/AuctionPlayer.java @@ -30,7 +30,7 @@ public class AuctionPlayer { public List getAuctionItems() { List list = new ArrayList<>(); for (AuctionItem item : Core.getInstance().getAuctionItems()) { - if (item.getOwner().equals(player.getUniqueId().toString())) { + if (item.getOwner().equals(player.getUniqueId())) { list.add(item); } } diff --git a/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/ExpiredCommand.java b/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/ExpiredCommand.java index f18cab5..62979b1 100644 --- a/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/ExpiredCommand.java +++ b/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/ExpiredCommand.java @@ -4,6 +4,7 @@ import com.kiranhart.auctionhouse.Core; import com.kiranhart.auctionhouse.api.statics.AuctionLang; import com.kiranhart.auctionhouse.api.statics.AuctionPermissions; import com.kiranhart.auctionhouse.cmds.SubCommand; +import com.kiranhart.auctionhouse.inventory.inventories.ExpiredGUI; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -29,7 +30,7 @@ public class ExpiredCommand extends SubCommand { } Player p = (Player) sender; - // p.openInventory(new ExpiredGUI(p).getInventory()); + p.openInventory(new ExpiredGUI(p).getInventory()); } @Override diff --git a/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/ListedCommand.java b/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/ListedCommand.java index fbd6566..4292bd9 100644 --- a/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/ListedCommand.java +++ b/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/ListedCommand.java @@ -30,7 +30,7 @@ public class ListedCommand extends SubCommand { } Player p = (Player) sender; - //p.openInventory(new ListingsGUI(p).getInventory()); + p.openInventory(new ListingsGUI(p).getInventory()); } @Override diff --git a/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/TransactionsCommand.java b/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/TransactionsCommand.java index 401e22e..abc0969 100644 --- a/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/TransactionsCommand.java +++ b/src/main/java/com/kiranhart/auctionhouse/cmds/subcommands/TransactionsCommand.java @@ -30,7 +30,7 @@ public class TransactionsCommand extends SubCommand { } Player p = (Player) sender; - //p.openInventory(new AllTransactionsGUI(p).getInventory()); + p.openInventory(new AllTransactionsGUI(p).getInventory()); } @Override diff --git a/src/main/java/com/kiranhart/auctionhouse/inventory/inventories/AuctionGUI.java b/src/main/java/com/kiranhart/auctionhouse/inventory/inventories/AuctionGUI.java index 5eb37fb..4dd4a87 100644 --- a/src/main/java/com/kiranhart/auctionhouse/inventory/inventories/AuctionGUI.java +++ b/src/main/java/com/kiranhart/auctionhouse/inventory/inventories/AuctionGUI.java @@ -139,14 +139,14 @@ public class AuctionGUI implements AGUI { } else { //Not enough money to bid e.getClickedInventory().setItem(slot, AuctionAPI.getInstance().createNotEnoughMoneyIcon()); - Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(Core.getInstance(), () -> { + Bukkit.getServer().getScheduler().runTaskLater(Core.getInstance(), () -> { p.closeInventory(); p.openInventory(new AuctionGUI(p).getInventory()); }, 20); } - p.closeInventory(); - p.openInventory(new AuctionGUI(p).getInventory()); +// p.closeInventory(); +// p.openInventory(new AuctionGUI(p).getInventory()); return; } @@ -171,14 +171,14 @@ public class AuctionGUI implements AGUI { } else { //Not enough money to purchase e.getClickedInventory().setItem(slot, AuctionAPI.getInstance().createNotEnoughMoneyIcon()); - Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(Core.getInstance(), () -> { + Bukkit.getServer().getScheduler().runTaskLater(Core.getInstance(), () -> { p.closeInventory(); p.openInventory(new AuctionGUI(p).getInventory()); }, 20); } - p.closeInventory(); - p.openInventory(new AuctionGUI(p).getInventory()); +// p.closeInventory(); +// p.openInventory(new AuctionGUI(p).getInventory()); return; } @@ -203,14 +203,14 @@ public class AuctionGUI implements AGUI { } else { //Not enough money to purchase e.getClickedInventory().setItem(slot, AuctionAPI.getInstance().createNotEnoughMoneyIcon()); - Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(Core.getInstance(), () -> { + Bukkit.getServer().getScheduler().runTaskLater(Core.getInstance(), () -> { p.closeInventory(); p.openInventory(new AuctionGUI(p).getInventory()); }, 20); } - p.closeInventory(); - p.openInventory(new AuctionGUI(p).getInventory()); +// p.closeInventory(); +// p.openInventory(new AuctionGUI(p).getInventory()); return; } } diff --git a/src/main/java/com/kiranhart/auctionhouse/util/storage/Database.java b/src/main/java/com/kiranhart/auctionhouse/util/storage/Database.java new file mode 100644 index 0000000..df067b8 --- /dev/null +++ b/src/main/java/com/kiranhart/auctionhouse/util/storage/Database.java @@ -0,0 +1,66 @@ +package com.kiranhart.auctionhouse.util.storage; +/* + The current file was created by Kiran Hart + Date: August 12 2019 + Time: 4:17 PM + + Code within this class is not to be redistributed without proper permission. +*/ + +import com.kiranhart.auctionhouse.Core; +import com.kiranhart.auctionhouse.util.Debugger; + +import java.sql.Connection; +import java.sql.PreparedStatement; + +public class Database { + + private static Database instance; + + private Database() { + } + + public static Database getInstance() { + if (instance == null) { + instance = new Database(); + } + return instance; + } + + public enum Tables { + + TRANSACTIONS("transactions"), + ; + + private String tableName; + + Tables(String tableName) { + this.tableName = tableName; + } + + public String getTableName() { + return tableName; + } + } + + public boolean performTableCreation(Tables... tables) { + try { + //Loop through each of the passed in tables + for (Tables table : tables) { + + //Check if the table is TRANSACTIONS + if (table == Tables.TRANSACTIONS) { + //Perform the table creation; + String query = "CREATE TABLE IF NOT EXISTS `transactions` ( `id` INT NOT NULL AUTO_INCREMENT , `transaction_type` TEXT NOT NULL , `seller` TEXT NOT NULL , `buyer` TEXT NOT NULL , `start_price` TEXT NOT NULL , `bid_increment` TEXT NOT NULL , `buy_now_price` TEXT NOT NULL , `final_price` TEXT NOT NULL , `time_left` INT NOT NULL , `auction_id` INT NOT NULL , `time_completed` TEXT NOT NULL , `item_type` TEXT NOT NULL , `item_name` TEXT NOT NULL , `item_lore` TEXT NOT NULL , `item_enchants` TEXT NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB"; + Connection connection = Core.getInstance().getHikari().getConnection(); + PreparedStatement statement = connection.prepareStatement(query); + statement.executeQuery(); + } + } + } catch (Exception e) { + Debugger.report(e); + return false; + } + return true; + } +} diff --git a/src/main/java/com/kiranhart/auctionhouse/util/tasks/SaveTransactionTask.java b/src/main/java/com/kiranhart/auctionhouse/util/tasks/SaveTransactionTask.java index 402c9cb..5b7cfac 100644 --- a/src/main/java/com/kiranhart/auctionhouse/util/tasks/SaveTransactionTask.java +++ b/src/main/java/com/kiranhart/auctionhouse/util/tasks/SaveTransactionTask.java @@ -35,8 +35,8 @@ public class SaveTransactionTask extends BukkitRunnable { @Override public void run() { Core.getInstance().getTransactions().getConfig().set("transactions." + transaction.getTimeCompleted() + transaction.getAuctionItem().getKey() + ".transaction-type", transaction.getTransactionType().getTransactionType()); - Core.getInstance().getTransactions().getConfig().set("transactions." + transaction.getTimeCompleted() + transaction.getAuctionItem().getKey() + ".seller", transaction.getAuctionItem().getOwner()); - Core.getInstance().getTransactions().getConfig().set("transactions." + transaction.getTimeCompleted() + transaction.getAuctionItem().getKey() + ".buyer", transaction.getBuyer()); + Core.getInstance().getTransactions().getConfig().set("transactions." + transaction.getTimeCompleted() + transaction.getAuctionItem().getKey() + ".seller", transaction.getAuctionItem().getOwner().toString()); + Core.getInstance().getTransactions().getConfig().set("transactions." + transaction.getTimeCompleted() + transaction.getAuctionItem().getKey() + ".buyer", transaction.getBuyer().toString()); Core.getInstance().getTransactions().getConfig().set("transactions." + transaction.getTimeCompleted() + transaction.getAuctionItem().getKey() + ".start-price", transaction.getAuctionItem().getStartPrice()); Core.getInstance().getTransactions().getConfig().set("transactions." + transaction.getTimeCompleted() + transaction.getAuctionItem().getKey() + ".bid-increment", transaction.getAuctionItem().getBidIncrement()); Core.getInstance().getTransactions().getConfig().set("transactions." + transaction.getTimeCompleted() + transaction.getAuctionItem().getKey() + ".current-price", transaction.getAuctionItem().getCurrentPrice()); diff --git a/src/main/java/com/kiranhart/auctionhouse/util/tasks/TickAuctionsTask.java b/src/main/java/com/kiranhart/auctionhouse/util/tasks/TickAuctionsTask.java index 9925534..c7f5b17 100644 --- a/src/main/java/com/kiranhart/auctionhouse/util/tasks/TickAuctionsTask.java +++ b/src/main/java/com/kiranhart/auctionhouse/util/tasks/TickAuctionsTask.java @@ -38,7 +38,7 @@ public class TickAuctionsTask extends BukkitRunnable { plugin = core; if (instance == null) { instance = new TickAuctionsTask(plugin); - instance.runTaskTimerAsynchronously(plugin, 0, 20 * 5); + instance.runTaskTimerAsynchronously(plugin, 0, 20 * AuctionSettings.UPDATE_EVERY_TICK); } return instance; } @@ -138,14 +138,14 @@ public class TickAuctionsTask extends BukkitRunnable { Bukkit.getOnlinePlayers().forEach(p -> { if (p.getOpenInventory().getTitle().equalsIgnoreCase(ChatColor.translateAlternateColorCodes('&', Core.getInstance().getConfig().getString("guis.auctionhouse.title")))) { p.getOpenInventory().getTopInventory().clear(); - p.getOpenInventory().getTopInventory().setItem(45, AuctionAPI.getInstance().createConfigurationItem("gui.auction.items.yourauctions", new AuctionPlayer(p).getTotalActiveAuctions(), 0)); - p.getOpenInventory().getTopInventory().setItem(46, AuctionAPI.getInstance().createConfigurationItem("gui.auction.items.collectionbin", 0, new AuctionPlayer(p).getTotalExpiredAuctions())); - p.getOpenInventory().getTopInventory().setItem(48, AuctionAPI.getInstance().createConfigurationItem("gui.auction.items.previouspage", 0, 0)); - p.getOpenInventory().getTopInventory().setItem(49, AuctionAPI.getInstance().createConfigurationItem("gui.auction.items.refresh", 0, 0)); - p.getOpenInventory().getTopInventory().setItem(50, AuctionAPI.getInstance().createConfigurationItem("gui.auction.items.nextpage", 0, 0)); - p.getOpenInventory().getTopInventory().setItem(51, AuctionAPI.getInstance().createConfigurationItem("gui.auction.items.transactions", 0, 0)); - p.getOpenInventory().getTopInventory().setItem(52, AuctionAPI.getInstance().createConfigurationItem("gui.auction.items.howtosell", 0, 0)); - p.getOpenInventory().getTopInventory().setItem(53, AuctionAPI.getInstance().createConfigurationItem("gui.auction.items.guide", 0, 0)); + p.getOpenInventory().getTopInventory().setItem(45, AuctionAPI.getInstance().createConfigurationItem("guis.auctionhouse.items.yourauctions", new AuctionPlayer(p).getTotalActiveAuctions(), 0)); + p.getOpenInventory().getTopInventory().setItem(46, AuctionAPI.getInstance().createConfigurationItem("guis.auctionhouse.items.collectionbin", 0, new AuctionPlayer(p).getTotalExpiredAuctions())); + p.getOpenInventory().getTopInventory().setItem(48, AuctionAPI.getInstance().createConfigurationItem("guis.auctionhouse.items.previouspage", 0, 0)); + p.getOpenInventory().getTopInventory().setItem(49, AuctionAPI.getInstance().createConfigurationItem("guis.auctionhouse.items.refresh", 0, 0)); + p.getOpenInventory().getTopInventory().setItem(50, AuctionAPI.getInstance().createConfigurationItem("guis.auctionhouse.items.nextpage", 0, 0)); + p.getOpenInventory().getTopInventory().setItem(51, AuctionAPI.getInstance().createConfigurationItem("guis.auctionhouse.items.transactions", 0, 0)); + p.getOpenInventory().getTopInventory().setItem(52, AuctionAPI.getInstance().createConfigurationItem("guis.auctionhouse.items.howtosell", 0, 0)); + p.getOpenInventory().getTopInventory().setItem(53, AuctionAPI.getInstance().createConfigurationItem("guis.auctionhouse.items.guide", 0, 0)); List> chunks = Lists.partition(Core.getInstance().getAuctionItems(), 45); chunks.get(0).forEach(item -> p.getOpenInventory().getTopInventory().setItem(p.getOpenInventory().getTopInventory().firstEmpty(), item.getAuctionStack(AuctionItem.AuctionItemType.MAIN))); @@ -157,5 +157,7 @@ public class TickAuctionsTask extends BukkitRunnable { } catch (Exception e) { Debugger.report(e); } + + Bukkit.getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&6AuctionHouse&8]&a Ran Auction Tick at rate of " + AuctionSettings.UPDATE_EVERY_TICK + "s")); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 34d5b15..b9d46f8 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -23,10 +23,10 @@ settings: #MySql stuff for databases if you want database: - enabled: false + enabled: true host: "localhost" port: 3306 - database: "auctionhouse" + name: "auctionhouse" username: "root" password: ""