diff --git a/pom.xml b/pom.xml
index 232a668..e55d8fc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
4.0.0
ca.tweetzy
auctionhouse
- 2.16.0
+ 2.16.1
UTF-8
diff --git a/src/main/java/ca/tweetzy/auctionhouse/AuctionHouse.java b/src/main/java/ca/tweetzy/auctionhouse/AuctionHouse.java
index 139e027..9ea4058 100644
--- a/src/main/java/ca/tweetzy/auctionhouse/AuctionHouse.java
+++ b/src/main/java/ca/tweetzy/auctionhouse/AuctionHouse.java
@@ -131,7 +131,10 @@ public class AuctionHouse extends TweetyPlugin {
if (Settings.DATABASE_USE.getBoolean()) {
this.databaseConnector = new MySQLConnector(this, Settings.DATABASE_HOST.getString(), Settings.DATABASE_PORT.getInt(), Settings.DATABASE_NAME.getString(), Settings.DATABASE_USERNAME.getString(), Settings.DATABASE_PASSWORD.getString(), Settings.DATABASE_USE_SSL.getBoolean());
this.dataManager = new DataManager(this.databaseConnector, this);
- DataMigrationManager dataMigrationManager = new DataMigrationManager(this.databaseConnector, this.dataManager, new _1_InitialMigration(), new _2_FilterWhitelistMigration());
+ DataMigrationManager dataMigrationManager = new DataMigrationManager(this.databaseConnector, this.dataManager,
+ new _1_InitialMigration(),
+ new _2_FilterWhitelistMigration()
+ );
dataMigrationManager.runMigrations();
}
diff --git a/src/main/java/ca/tweetzy/auctionhouse/auction/AuctionItem.java b/src/main/java/ca/tweetzy/auctionhouse/auction/AuctionItem.java
index 5bcc85b..405bfba 100644
--- a/src/main/java/ca/tweetzy/auctionhouse/auction/AuctionItem.java
+++ b/src/main/java/ca/tweetzy/auctionhouse/auction/AuctionItem.java
@@ -73,7 +73,7 @@ public class AuctionItem implements Serializable {
public ItemStack getDisplayStack(AuctionStackType type) {
ItemStack itemStack = AuctionAPI.getInstance().deserializeItem(this.rawItem).clone();
itemStack.setAmount(Math.max(itemStack.getAmount(), 1));
- ItemMeta meta = itemStack.getItemMeta();
+ ItemMeta meta = itemStack.hasItemMeta() ? itemStack.getItemMeta() : Bukkit.getItemFactory().getItemMeta(itemStack.getType());
List lore = (meta.hasLore()) ? meta.getLore() : new ArrayList<>();
String theSeller = (this.owner == null) ? "&eSeller Name???" : Bukkit.getOfflinePlayer(this.owner).getName();
diff --git a/src/main/java/ca/tweetzy/auctionhouse/commands/CommandAdmin.java b/src/main/java/ca/tweetzy/auctionhouse/commands/CommandAdmin.java
index 5cf1869..0c9b34f 100644
--- a/src/main/java/ca/tweetzy/auctionhouse/commands/CommandAdmin.java
+++ b/src/main/java/ca/tweetzy/auctionhouse/commands/CommandAdmin.java
@@ -1,17 +1,20 @@
package ca.tweetzy.auctionhouse.commands;
import ca.tweetzy.auctionhouse.AuctionHouse;
+import ca.tweetzy.auctionhouse.api.AuctionAPI;
import ca.tweetzy.auctionhouse.auction.AuctionItem;
-import ca.tweetzy.auctionhouse.helpers.PlayerHelper;
+import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer;
import ca.tweetzy.auctionhouse.settings.Settings;
import ca.tweetzy.core.commands.AbstractCommand;
-import ca.tweetzy.core.utils.items.ItemUtils;
+import ca.tweetzy.core.compatibility.XMaterial;
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.stream.Collectors;
/**
* The current file has been created by Kiran Hart
@@ -43,15 +46,19 @@ public class CommandAdmin extends AbstractCommand {
AuctionHouse.getInstance().getLocale().getMessage("general.relisteditems").sendPrefixedMessage(sender);
break;
case "cleanunknownusers":
- // Don't tell ppl that this exists just yet
+ // Don't tell ppl that this exists
AuctionHouse.getInstance().getAuctionItemManager().removeUnknownOwnerItems();
break;
- case "stacksize":
- Player player = (Player) sender;
- ItemStack item = PlayerHelper.getHeldItem(player);
- ItemUtils.setMaxStack(item, 127);
- item.setAmount(127);
-
+ case "clearall":
+ // Don't tell ppl that this exists
+ AuctionHouse.getInstance().getAuctionItemManager().getAuctionItems().clear();
+ case "clean":
+ // Don't tell ppl that this exists
+ AuctionHouse.getInstance().getAuctionItemManager().getAuctionItems().forEach(item -> {
+ if (AuctionAPI.getInstance().deserializeItem(item.getRawItem()) == null || XMaterial.isAir(XMaterial.matchXMaterial(AuctionAPI.getInstance().deserializeItem(item.getRawItem())))) {
+ AuctionHouse.getInstance().getAuctionItemManager().sendToGarbage(item);
+ }
+ });
break;
}
diff --git a/src/main/java/ca/tweetzy/auctionhouse/database/DataManager.java b/src/main/java/ca/tweetzy/auctionhouse/database/DataManager.java
index 68cc36d..7103224 100644
--- a/src/main/java/ca/tweetzy/auctionhouse/database/DataManager.java
+++ b/src/main/java/ca/tweetzy/auctionhouse/database/DataManager.java
@@ -49,7 +49,7 @@ public class DataManager extends DataManagerAbstract {
statement.executeBatch();
}));
} else {
- this.databaseConnector.connect(connection -> {
+ this.sync(() -> this.databaseConnector.connect(connection -> {
String saveItems = "INSERT IGNORE INTO " + this.getTablePrefix() + "items SET data = ?";
String truncate = "TRUNCATE TABLE " + this.getTablePrefix() + "items";
connection.prepareStatement(truncate).executeUpdate();
@@ -63,7 +63,7 @@ public class DataManager extends DataManagerAbstract {
}
});
statement.executeBatch();
- });
+ }));
}
}
@@ -88,7 +88,7 @@ public class DataManager extends DataManagerAbstract {
statement.executeBatch();
}));
} else {
- this.databaseConnector.connect(connection -> {
+ this.sync(() -> this.databaseConnector.connect(connection -> {
String saveItems = "INSERT IGNORE INTO " + this.getTablePrefix() + "filter_whitelist SET data = ?";
String truncate = "TRUNCATE TABLE " + this.getTablePrefix() + "filter_whitelist";
try (PreparedStatement statement = connection.prepareStatement(truncate)) {
@@ -105,7 +105,7 @@ public class DataManager extends DataManagerAbstract {
}
});
statement.executeBatch();
- });
+ }));
}
}
@@ -130,7 +130,7 @@ public class DataManager extends DataManagerAbstract {
statement.executeBatch();
}));
} else {
- this.databaseConnector.connect(connection -> {
+ this.sync(() -> this.databaseConnector.connect(connection -> {
String saveItems = "INSERT IGNORE INTO " + this.getTablePrefix() + "transactions SET data = ?";
String truncate = "TRUNCATE TABLE " + this.getTablePrefix() + "transactions";
try (PreparedStatement statement = connection.prepareStatement(truncate)) {
@@ -147,7 +147,7 @@ public class DataManager extends DataManagerAbstract {
}
});
statement.executeBatch();
- });
+ }));
}
}
diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmPurchase.java b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmPurchase.java
index ad297bb..a7bd4de 100644
--- a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmPurchase.java
+++ b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmPurchase.java
@@ -82,6 +82,8 @@ public class GUIConfirmPurchase extends Gui {
setActionForRange(this.buyingSpecificQuantity ? 9 : 0, this.buyingSpecificQuantity ? 12 : 3, ClickType.LEFT, e -> {
// Re-select the item to ensure that it's available
try {
+ // if the item is in the garbage then just don't continue
+ if (AuctionHouse.getInstance().getAuctionItemManager().getGarbageBin().stream().anyMatch(items -> items.getKey().equals(this.auctionItem.getKey()))) return;
AuctionItem located = AuctionHouse.getInstance().getAuctionItemManager().getItem(this.auctionItem.getKey());
preItemChecks(e, located);
diff --git a/src/main/java/ca/tweetzy/auctionhouse/listeners/AuctionListeners.java b/src/main/java/ca/tweetzy/auctionhouse/listeners/AuctionListeners.java
index 90ba5da..b840a19 100644
--- a/src/main/java/ca/tweetzy/auctionhouse/listeners/AuctionListeners.java
+++ b/src/main/java/ca/tweetzy/auctionhouse/listeners/AuctionListeners.java
@@ -23,6 +23,11 @@ public class AuctionListeners implements Listener {
@EventHandler
public void onAuctionStart(AuctionStartEvent e) {
+ // TODO THIS IS GONNA BE SCUFFED
+ if (Settings.DATABASE_USE.getBoolean() && Settings.DATABASE_UPDATE_ON_EVENT.getBoolean()) {
+
+ }
+
if (Settings.DISCORD_ENABLED.getBoolean() && Settings.DISCORD_ALERT_ON_AUCTION_START.getBoolean()) {
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(AuctionHouse.getInstance(), () -> {
Settings.DISCORD_WEBHOOKS.getStringList().forEach(hook -> {
diff --git a/src/main/java/ca/tweetzy/auctionhouse/settings/Settings.java b/src/main/java/ca/tweetzy/auctionhouse/settings/Settings.java
index 5f970d1..b1655c4 100644
--- a/src/main/java/ca/tweetzy/auctionhouse/settings/Settings.java
+++ b/src/main/java/ca/tweetzy/auctionhouse/settings/Settings.java
@@ -161,6 +161,8 @@ public class Settings {
public static final ConfigSetting DATABASE_PASSWORD = new ConfigSetting(config, "database.password", "Password1.", "What is the password to the user connecting?");
public static final ConfigSetting DATABASE_USE_SSL = new ConfigSetting(config, "database.use ssl", true, "Should the database connection use ssl?");
+ public static final ConfigSetting DATABASE_UPDATE_ON_EVENT = new ConfigSetting(config, "database.update on event", true, "When an item is listed/bought/expired/cancelled should auction house update the database immediately?");
+
/* ===============================
* DISCORD WEBHOOK