From f2b57423301947c96e2c3b64cc240dd2a62a0423 Mon Sep 17 00:00:00 2001 From: Kiran Hart Date: Mon, 14 Jun 2021 19:30:20 -0400 Subject: [PATCH] 1.17 Support --- .../ca/tweetzy/auctionhouse/AuctionHouse.java | 1 - .../api/events/AuctionEndEvent.java | 1 - .../auctionhouse/commands/CommandActive.java | 1 - .../auctionhouse/commands/CommandAdmin.java | 4 ++ .../auctionhouse/commands/CommandExpired.java | 1 - .../auctionhouse/commands/CommandSell.java | 11 +++-- .../auctionhouse/database/DataManager.java | 11 +---- .../auctionhouse/guis/GUIAuctionHouse.java | 43 +++++++++---------- .../auctionhouse/guis/GUIConfirmBid.java | 11 ----- .../auctionhouse/guis/GUIConfirmCancel.java | 1 - .../guis/GUIContainerInspect.java | 2 - .../auctionhouse/guis/GUIExpiredItems.java | 1 - .../guis/transaction/GUITransactionView.java | 1 - .../auctionhouse/helpers/PlayerHelper.java | 2 - .../managers/AuctionItemManager.java | 13 +++--- .../managers/TransactionManager.java | 1 - .../auctionhouse/tasks/TickAuctionsTask.java | 6 --- 17 files changed, 39 insertions(+), 72 deletions(-) diff --git a/src/main/java/ca/tweetzy/auctionhouse/AuctionHouse.java b/src/main/java/ca/tweetzy/auctionhouse/AuctionHouse.java index f07a190..0535240 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/AuctionHouse.java +++ b/src/main/java/ca/tweetzy/auctionhouse/AuctionHouse.java @@ -22,7 +22,6 @@ import ca.tweetzy.core.database.DataMigrationManager; import ca.tweetzy.core.database.DatabaseConnector; import ca.tweetzy.core.database.MySQLConnector; import ca.tweetzy.core.gui.GuiManager; -import ca.tweetzy.core.locale.Locale; import ca.tweetzy.core.utils.Metrics; import co.aikar.taskchain.BukkitTaskChainFactory; import co.aikar.taskchain.TaskChain; diff --git a/src/main/java/ca/tweetzy/auctionhouse/api/events/AuctionEndEvent.java b/src/main/java/ca/tweetzy/auctionhouse/api/events/AuctionEndEvent.java index c83e689..4fa0a1b 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/api/events/AuctionEndEvent.java +++ b/src/main/java/ca/tweetzy/auctionhouse/api/events/AuctionEndEvent.java @@ -5,7 +5,6 @@ import ca.tweetzy.auctionhouse.auction.AuctionSaleType; import lombok.Getter; import lombok.Setter; import org.bukkit.OfflinePlayer; -import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; diff --git a/src/main/java/ca/tweetzy/auctionhouse/commands/CommandActive.java b/src/main/java/ca/tweetzy/auctionhouse/commands/CommandActive.java index ca3cabe..6a7384f 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/commands/CommandActive.java +++ b/src/main/java/ca/tweetzy/auctionhouse/commands/CommandActive.java @@ -3,7 +3,6 @@ package ca.tweetzy.auctionhouse.commands; import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.auction.AuctionPlayer; import ca.tweetzy.auctionhouse.guis.GUIActiveAuctions; -import ca.tweetzy.auctionhouse.guis.GUIAuctionHouse; import ca.tweetzy.core.commands.AbstractCommand; import ca.tweetzy.core.utils.TextUtils; import org.bukkit.Bukkit; diff --git a/src/main/java/ca/tweetzy/auctionhouse/commands/CommandAdmin.java b/src/main/java/ca/tweetzy/auctionhouse/commands/CommandAdmin.java index 7fa6a15..d018826 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/commands/CommandAdmin.java +++ b/src/main/java/ca/tweetzy/auctionhouse/commands/CommandAdmin.java @@ -38,6 +38,10 @@ 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 + AuctionHouse.getInstance().getAuctionItemManager().removeUnknownOwnerItems(); + break; } return ReturnType.SUCCESS; diff --git a/src/main/java/ca/tweetzy/auctionhouse/commands/CommandExpired.java b/src/main/java/ca/tweetzy/auctionhouse/commands/CommandExpired.java index 886d17b..3eb0a49 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/commands/CommandExpired.java +++ b/src/main/java/ca/tweetzy/auctionhouse/commands/CommandExpired.java @@ -2,7 +2,6 @@ package ca.tweetzy.auctionhouse.commands; import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.auction.AuctionPlayer; -import ca.tweetzy.auctionhouse.guis.GUIActiveAuctions; import ca.tweetzy.auctionhouse.guis.GUIExpiredItems; import ca.tweetzy.core.commands.AbstractCommand; import ca.tweetzy.core.utils.TextUtils; diff --git a/src/main/java/ca/tweetzy/auctionhouse/commands/CommandSell.java b/src/main/java/ca/tweetzy/auctionhouse/commands/CommandSell.java index 0131933..017093e 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/commands/CommandSell.java +++ b/src/main/java/ca/tweetzy/auctionhouse/commands/CommandSell.java @@ -44,7 +44,7 @@ public class CommandSell extends AbstractCommand { Player player = (Player) sender; AuctionPlayer auctionPlayer = AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(player.getUniqueId()); - ItemStack itemToSell = PlayerHelper.getHeldItem(player); + ItemStack itemToSell = PlayerHelper.getHeldItem(player).clone(); if (itemToSell.getType() == XMaterial.AIR.parseMaterial()) { AuctionHouse.getInstance().getLocale().getMessage("general.air").sendPrefixedMessage(player); @@ -112,10 +112,9 @@ public class CommandSell extends AbstractCommand { boolean isBiddingItem = listingPrices.size() == 3; - - /* + /*====================================================================== ================ THE PLAYER IS NOT USING THE BID OPTION ================ - */ + ======================================================================*/ if (!isBiddingItem && listingPrices.get(0) < Settings.MIN_AUCTION_PRICE.getDouble()) { AuctionHouse.getInstance().getLocale().getMessage("pricing.minbaseprice").processPlaceholder("price", Settings.MIN_AUCTION_PRICE.getDouble()).sendPrefixedMessage(player); @@ -127,9 +126,9 @@ public class CommandSell extends AbstractCommand { return ReturnType.FAILURE; } - /* + /*====================================================================== ================ THE PLAYER IS USING THE BIDDING SYSTEM ================ - */ + ======================================================================*/ if (Settings.ALLOW_USAGE_OF_BID_SYSTEM.getBoolean() && isBiddingItem && listingPrices.get(0) < Settings.MIN_AUCTION_PRICE.getDouble() && !(listingPrices.get(0) <= -1)) { AuctionHouse.getInstance().getLocale().getMessage("pricing.minbaseprice").processPlaceholder("price", Settings.MIN_AUCTION_PRICE.getDouble()).sendPrefixedMessage(player); diff --git a/src/main/java/ca/tweetzy/auctionhouse/database/DataManager.java b/src/main/java/ca/tweetzy/auctionhouse/database/DataManager.java index c953fe8..54f4d0b 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/database/DataManager.java +++ b/src/main/java/ca/tweetzy/auctionhouse/database/DataManager.java @@ -1,25 +1,18 @@ package ca.tweetzy.auctionhouse.database; -import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.api.AuctionAPI; import ca.tweetzy.auctionhouse.auction.AuctionItem; -import ca.tweetzy.auctionhouse.auction.AuctionItemCategory; -import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer; import ca.tweetzy.auctionhouse.transaction.Transaction; -import ca.tweetzy.core.compatibility.XMaterial; -import ca.tweetzy.core.configuration.Config; import ca.tweetzy.core.database.DataManagerAbstract; import ca.tweetzy.core.database.DatabaseConnector; -import org.bukkit.Bukkit; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; -import java.util.*; +import java.util.ArrayList; +import java.util.List; import java.util.function.Consumer; /** diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIAuctionHouse.java b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIAuctionHouse.java index 8bf984f..342a23d 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIAuctionHouse.java +++ b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIAuctionHouse.java @@ -14,14 +14,16 @@ import ca.tweetzy.core.gui.events.GuiClickEvent; import ca.tweetzy.core.utils.TextUtils; import ca.tweetzy.core.utils.items.TItemBuilder; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.block.ShulkerBox; import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BlockStateMeta; import org.bukkit.scheduler.BukkitTask; -import java.util.*; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -74,28 +76,25 @@ public class GUIAuctionHouse extends Gui { } private void drawItems() { - try { - AuctionHouse.newChain().asyncFirst(() -> { - this.items = AuctionHouse.getInstance().getAuctionItemManager().getAuctionItems().stream().filter(item -> !item.isExpired() && item.getRemainingTime() >= 1).collect(Collectors.toList()); + AuctionHouse.newChain().asyncFirst(() -> { + this.items = AuctionHouse.getInstance().getAuctionItemManager().getAuctionItems().stream().filter(item -> !item.isExpired() && item.getRemainingTime() >= 1).collect(Collectors.toList()); - if (this.searchPhrase.length() != 0) { - this.items = this.items.stream().filter(auctionItem -> AuctionAPI.getInstance().match(this.searchPhrase, ChatColor.stripColor(auctionItem.getItemName())) || AuctionAPI.getInstance().match(this.searchPhrase, auctionItem.getCategory().getType()) || AuctionAPI.getInstance().match(this.searchPhrase, auctionItem.getCategory().getTranslatedType()) || AuctionAPI.getInstance().match(this.searchPhrase, Bukkit.getOfflinePlayer(auctionItem.getOwner()).getName())).collect(Collectors.toList()); - } + if (this.searchPhrase != null && this.searchPhrase.length() != 0) { + this.items = this.items.stream().filter(auctionItem -> AuctionAPI.getInstance().match(this.searchPhrase, auctionItem.getItemName()) || AuctionAPI.getInstance().match(this.searchPhrase, auctionItem.getCategory().getTranslatedType()) || AuctionAPI.getInstance().match(this.searchPhrase, Bukkit.getOfflinePlayer(auctionItem.getOwner()).getName())).collect(Collectors.toList()); + } - if (this.filterCategory != AuctionItemCategory.ALL) - this.items = items.stream().filter(item -> item.getCategory() == this.filterCategory).collect(Collectors.toList()); + if (this.filterCategory != AuctionItemCategory.ALL) + this.items = items.stream().filter(item -> item.getCategory() == this.filterCategory).collect(Collectors.toList()); - if (this.filterAuctionType != AuctionSaleType.BOTH) - this.items = this.items.stream().filter(item -> this.filterAuctionType == AuctionSaleType.USED_BIDDING_SYSTEM ? item.getBidStartPrice() >= Settings.MIN_AUCTION_START_PRICE.getDouble() : item.getBidStartPrice() <= 0).collect(Collectors.toList()); + if (this.filterAuctionType != AuctionSaleType.BOTH) + this.items = this.items.stream().filter(item -> this.filterAuctionType == AuctionSaleType.USED_BIDDING_SYSTEM ? item.getBidStartPrice() >= Settings.MIN_AUCTION_START_PRICE.getDouble() : item.getBidStartPrice() <= 0).collect(Collectors.toList()); - return this.items.stream().sorted(Comparator.comparingInt(AuctionItem::getRemainingTime).reversed()).skip((page - 1) * 45L).limit(45).collect(Collectors.toList()); - }).asyncLast((data) -> { - pages = (int) Math.max(1, Math.ceil(this.items.size() / (double) 45L)); - drawPaginationButtons(); - placeItems(data); - }).execute(); - } catch (ConcurrentModificationException ignored) { - } + return this.items.stream().sorted(Comparator.comparingInt(AuctionItem::getRemainingTime).reversed()).skip((page - 1) * 45L).limit(45).collect(Collectors.toList()); + }).asyncLast((data) -> { + pages = (int) Math.max(1, Math.ceil(this.items.size() / (double) 45L)); + drawPaginationButtons(); + placeItems(data); + }).execute(); } /* @@ -298,11 +297,11 @@ public class GUIAuctionHouse extends Gui { switch (e.clickType) { case LEFT: this.filterCategory = this.filterCategory.next(); - updateFilter(); + draw(); break; case RIGHT: this.filterAuctionType = this.filterAuctionType.next(); - updateFilter(); + draw(); break; } }); diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmBid.java b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmBid.java index fced011..d8b394a 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmBid.java +++ b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmBid.java @@ -2,25 +2,14 @@ package ca.tweetzy.auctionhouse.guis; import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.api.AuctionAPI; -import ca.tweetzy.auctionhouse.api.events.AuctionEndEvent; import ca.tweetzy.auctionhouse.auction.AuctionItem; import ca.tweetzy.auctionhouse.auction.AuctionPlayer; -import ca.tweetzy.auctionhouse.auction.AuctionSaleType; -import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper; -import ca.tweetzy.auctionhouse.managers.SoundManager; import ca.tweetzy.auctionhouse.settings.Settings; import ca.tweetzy.core.gui.Gui; -import ca.tweetzy.core.gui.events.GuiClickEvent; -import ca.tweetzy.core.utils.PlayerUtils; import ca.tweetzy.core.utils.TextUtils; import ca.tweetzy.core.utils.items.TItemBuilder; -import org.apache.commons.lang.WordUtils; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; -import org.bukkit.inventory.ItemStack; -import java.util.HashMap; import java.util.Objects; /** diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmCancel.java b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmCancel.java index b1e7de9..35346a9 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmCancel.java +++ b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmCancel.java @@ -1,7 +1,6 @@ package ca.tweetzy.auctionhouse.guis; import ca.tweetzy.auctionhouse.AuctionHouse; -import ca.tweetzy.auctionhouse.api.AuctionAPI; import ca.tweetzy.auctionhouse.auction.AuctionItem; import ca.tweetzy.auctionhouse.auction.AuctionPlayer; import ca.tweetzy.auctionhouse.auction.AuctionStackType; diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIContainerInspect.java b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIContainerInspect.java index 9e64744..dd04860 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIContainerInspect.java +++ b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIContainerInspect.java @@ -9,8 +9,6 @@ import org.bukkit.block.ShulkerBox; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BlockStateMeta; -import java.util.Arrays; - /** * The current file has been created by Kiran Hart * Date Created: April 14 2021 diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIExpiredItems.java b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIExpiredItems.java index 2de44bc..e98a091 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIExpiredItems.java +++ b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIExpiredItems.java @@ -4,7 +4,6 @@ import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.api.AuctionAPI; import ca.tweetzy.auctionhouse.auction.AuctionItem; import ca.tweetzy.auctionhouse.auction.AuctionPlayer; -import ca.tweetzy.auctionhouse.auction.AuctionStackType; import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper; import ca.tweetzy.auctionhouse.managers.SoundManager; import ca.tweetzy.auctionhouse.settings.Settings; diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/transaction/GUITransactionView.java b/src/main/java/ca/tweetzy/auctionhouse/guis/transaction/GUITransactionView.java index 173ac49..e72fbb9 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/guis/transaction/GUITransactionView.java +++ b/src/main/java/ca/tweetzy/auctionhouse/guis/transaction/GUITransactionView.java @@ -2,7 +2,6 @@ package ca.tweetzy.auctionhouse.guis.transaction; import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.api.AuctionAPI; -import ca.tweetzy.auctionhouse.auction.AuctionItem; import ca.tweetzy.auctionhouse.auction.AuctionPlayer; import ca.tweetzy.auctionhouse.auction.AuctionSaleType; import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper; diff --git a/src/main/java/ca/tweetzy/auctionhouse/helpers/PlayerHelper.java b/src/main/java/ca/tweetzy/auctionhouse/helpers/PlayerHelper.java index 3866cbd..997b78b 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/helpers/PlayerHelper.java +++ b/src/main/java/ca/tweetzy/auctionhouse/helpers/PlayerHelper.java @@ -1,8 +1,6 @@ package ca.tweetzy.auctionhouse.helpers; -import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.core.compatibility.ServerVersion; -import ca.tweetzy.core.utils.TextUtils; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; diff --git a/src/main/java/ca/tweetzy/auctionhouse/managers/AuctionItemManager.java b/src/main/java/ca/tweetzy/auctionhouse/managers/AuctionItemManager.java index 4e381cf..f2e44eb 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/managers/AuctionItemManager.java +++ b/src/main/java/ca/tweetzy/auctionhouse/managers/AuctionItemManager.java @@ -3,15 +3,11 @@ package ca.tweetzy.auctionhouse.managers; import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.api.AuctionAPI; import ca.tweetzy.auctionhouse.auction.AuctionItem; -import ca.tweetzy.auctionhouse.auction.AuctionItemCategory; -import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer; import ca.tweetzy.core.utils.TextUtils; import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; /** @@ -34,6 +30,11 @@ public class AuctionItemManager { this.auctionItems.removeIf(item -> item.getKey().equals(uuid)); } + public void removeUnknownOwnerItems() { + List knownOfflinePlayers = Arrays.stream(Bukkit.getOfflinePlayers()).map(OfflinePlayer::getUniqueId).collect(Collectors.toList()); + this.auctionItems.removeIf(item -> !knownOfflinePlayers.contains(item.getOwner())); + } + public AuctionItem getItem(UUID uuid) { return this.auctionItems.stream().filter(item -> item.getKey().equals(uuid)).findFirst().orElse(null); } diff --git a/src/main/java/ca/tweetzy/auctionhouse/managers/TransactionManager.java b/src/main/java/ca/tweetzy/auctionhouse/managers/TransactionManager.java index 83a15e5..b016040 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/managers/TransactionManager.java +++ b/src/main/java/ca/tweetzy/auctionhouse/managers/TransactionManager.java @@ -2,7 +2,6 @@ package ca.tweetzy.auctionhouse.managers; import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.api.AuctionAPI; -import ca.tweetzy.auctionhouse.settings.Settings; import ca.tweetzy.auctionhouse.transaction.Transaction; import ca.tweetzy.core.utils.TextUtils; import org.bukkit.Bukkit; diff --git a/src/main/java/ca/tweetzy/auctionhouse/tasks/TickAuctionsTask.java b/src/main/java/ca/tweetzy/auctionhouse/tasks/TickAuctionsTask.java index 8370442..4c563fe 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/tasks/TickAuctionsTask.java +++ b/src/main/java/ca/tweetzy/auctionhouse/tasks/TickAuctionsTask.java @@ -2,13 +2,7 @@ package ca.tweetzy.auctionhouse.tasks; import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.api.AuctionAPI; -import ca.tweetzy.auctionhouse.api.events.AuctionEndEvent; -import ca.tweetzy.auctionhouse.auction.AuctionSaleType; import ca.tweetzy.auctionhouse.settings.Settings; -import ca.tweetzy.core.utils.PlayerUtils; -import org.apache.commons.lang.WordUtils; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; import org.bukkit.scheduler.BukkitRunnable; import java.util.stream.Collectors;