From 3ecc12541b677ea63088bf5725d4602647384795 Mon Sep 17 00:00:00 2001 From: Kiran Hart Date: Thu, 20 May 2021 11:43:10 -0400 Subject: [PATCH] 2.11.0 --- pom.xml | 2 +- .../auctionhouse/guis/GUIActiveAuctions.java | 6 +++ .../auctionhouse/guis/GUIConfirmCancel.java | 54 +++++++++++++++++++ .../auctionhouse/guis/GUIConfirmPurchase.java | 9 ++-- .../managers/AuctionItemManager.java | 7 --- .../auctionhouse/settings/Settings.java | 20 +++++++ 6 files changed, 84 insertions(+), 14 deletions(-) create mode 100644 src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmCancel.java diff --git a/pom.xml b/pom.xml index 716b3df..05290d9 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 4.0.0 ca.tweetzy auctionhouse - 2.10.1 + 2.11.0 UTF-8 diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIActiveAuctions.java b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIActiveAuctions.java index 611c5b1..8835be5 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIActiveAuctions.java +++ b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIActiveAuctions.java @@ -66,6 +66,12 @@ public class GUIActiveAuctions extends Gui { setButton(slot++, item.getDisplayStack(AuctionStackType.ACTIVE_AUCTIONS_LIST), e -> { switch (e.clickType) { case LEFT: + if (((item.getBidStartPrice() > 0 || item.getBidIncPrice() > 0) && Settings.ASK_FOR_CANCEL_CONFIRM_ON_BID_ITEMS.getBoolean()) || Settings.ASK_FOR_CANCEL_CONFIRM_ON_NON_BID_ITEMS.getBoolean()) { + cleanup(); + e.manager.showGUI(e.player, new GUIConfirmCancel(this.auctionPlayer, item)); + return; + } + item.setExpired(true); draw(); break; diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmCancel.java b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmCancel.java new file mode 100644 index 0000000..b1e7de9 --- /dev/null +++ b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmCancel.java @@ -0,0 +1,54 @@ +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; +import ca.tweetzy.auctionhouse.settings.Settings; +import ca.tweetzy.core.gui.Gui; +import ca.tweetzy.core.utils.TextUtils; +import ca.tweetzy.core.utils.items.TItemBuilder; +import org.bukkit.event.inventory.ClickType; + +import java.util.Objects; + +/** + * The current file has been created by Kiran Hart + * Date Created: May 20 2021 + * Time Created: 11:28 a.m. + * Usage of any code found within this class is prohibited unless given explicit permission otherwise + */ +public class GUIConfirmCancel extends Gui { + + final AuctionPlayer auctionPlayer; + final AuctionItem auctionItem; + + public GUIConfirmCancel(AuctionPlayer auctionPlayer, AuctionItem auctionItem) { + this.auctionPlayer = auctionPlayer; + this.auctionItem = auctionItem; + setTitle(TextUtils.formatText(Settings.GUI_CONFIRM_CANCEL_TITLE.getString())); + setAcceptsItems(false); + setRows(1); + draw(); + } + + private void draw() { + setItems(0, 3, new TItemBuilder(Objects.requireNonNull(Settings.GUI_CONFIRM_CANCEL_YES_ITEM.getMaterial().parseMaterial())).setName(Settings.GUI_CONFIRM_CANCEL_YES_NAME.getString()).setLore(Settings.GUI_CONFIRM_CANCEL_YES_LORE.getStringList()).toItemStack()); + setItem(0, 4, this.auctionItem.getDisplayStack(AuctionStackType.ACTIVE_AUCTIONS_LIST)); + setItems(5, 8, new TItemBuilder(Objects.requireNonNull(Settings.GUI_CONFIRM_CANCEL_NO_ITEM.getMaterial().parseMaterial())).setName(Settings.GUI_CONFIRM_CANCEL_NO_NAME.getString()).setLore(Settings.GUI_CONFIRM_CANCEL_NO_LORE.getStringList()).toItemStack()); + + setActionForRange(5, 8, ClickType.LEFT, e -> e.manager.showGUI(e.player, new GUIActiveAuctions(this.auctionPlayer))); + setActionForRange(0, 3, ClickType.LEFT, e -> { + // Re-select the item to ensure that it's available + AuctionItem located = AuctionHouse.getInstance().getAuctionItemManager().getItem(this.auctionItem.getKey()); + if (located == null) { + e.manager.showGUI(e.player, new GUIActiveAuctions(this.auctionPlayer)); + return; + } + + located.setExpired(true); + e.manager.showGUI(e.player, new GUIActiveAuctions(this.auctionPlayer)); + }); + } +} diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmPurchase.java b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmPurchase.java index 2752423..720b87c 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmPurchase.java +++ b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIConfirmPurchase.java @@ -111,13 +111,14 @@ public class GUIConfirmPurchase extends Gui { transferFunds(e.player, located.getBasePrice()); AuctionHouse.getInstance().getAuctionItemManager().removeItem(located.getKey()); } - givePlayerItem(e.player, item); + + PlayerUtils.giveItem(e.player, item); sendMessages(e, located, true, this.purchaseQuantity * this.pricePerItem); } else { transferFunds(e.player, located.getBasePrice()); AuctionHouse.getInstance().getAuctionItemManager().removeItem(located.getKey()); - givePlayerItem(e.player, AuctionAPI.getInstance().deserializeItem(located.getRawItem())); + PlayerUtils.giveItem(e.player, AuctionAPI.getInstance().deserializeItem(located.getRawItem())); sendMessages(e, located, false, 0); } @@ -163,10 +164,6 @@ public class GUIConfirmPurchase extends Gui { } } - private void givePlayerItem(Player player, ItemStack stack) { - Bukkit.getServer().getScheduler().runTask(AuctionHouse.getInstance(), () -> PlayerUtils.giveItem(player, stack)); - } - private void drawPurchaseInfo(int amt) { setItem(3, 4, getPurchaseInfoItem(amt)); } diff --git a/src/main/java/ca/tweetzy/auctionhouse/managers/AuctionItemManager.java b/src/main/java/ca/tweetzy/auctionhouse/managers/AuctionItemManager.java index af4cfdb..7a2672f 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/managers/AuctionItemManager.java +++ b/src/main/java/ca/tweetzy/auctionhouse/managers/AuctionItemManager.java @@ -42,13 +42,6 @@ public class AuctionItemManager { return this.auctionItems; } - public List getFilteredItems(AuctionItemCategory category) { - if (category == null) { - return Collections.unmodifiableList(this.auctionItems); - } - return Collections.unmodifiableList(auctionItems.stream().filter(auctionItem -> MaterialCategorizer.getMaterialCategory(AuctionAPI.getInstance().deserializeItem(auctionItem.getRawItem())) == category).collect(Collectors.toList())); - } - public void loadItems(boolean useDatabase) { if (useDatabase) { AuctionHouse.getInstance().getDataManager().getItems(all -> all.forEach(this::addItem)); diff --git a/src/main/java/ca/tweetzy/auctionhouse/settings/Settings.java b/src/main/java/ca/tweetzy/auctionhouse/settings/Settings.java index 54ccf93..9faaeac 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/settings/Settings.java +++ b/src/main/java/ca/tweetzy/auctionhouse/settings/Settings.java @@ -53,6 +53,10 @@ public class Settings { public static final ConfigSetting REFRESH_COOL_DOWN = new ConfigSetting(config, "auction setting.refresh cool down", 2, "How many seconds should pass before the player can refresh the auction house again?"); public static final ConfigSetting ALLOW_PURCHASE_IF_INVENTORY_FULL = new ConfigSetting(config, "auction setting.allow purchase with full inventory", true, "Should auction house allow players to buy items even if their", "inventory is full, if true, items will be dropped on the floor if there is no room."); public static final ConfigSetting ASK_FOR_BID_CONFIRMATION = new ConfigSetting(config, "auction setting.ask for bid confirmation", true, "Should Auction House open the confirmation menu for the user to confirm", "whether they actually meant to place a bid or not?"); + + public static final ConfigSetting ASK_FOR_CANCEL_CONFIRM_ON_BID_ITEMS = new ConfigSetting(config, "auction setting.ask for cancel confirm on bid items", true, "Should Auction House ask the user if they want to cancel the item?"); + public static final ConfigSetting ASK_FOR_CANCEL_CONFIRM_ON_NON_BID_ITEMS = new ConfigSetting(config, "auction setting.ask for cancel confirm on non bid items", false, "Should Auction House ask the user if they want to cancel the item?"); + public static final ConfigSetting BASE_PRICE_MUST_BE_HIGHER_THAN_BID_START = new ConfigSetting(config, "auction setting.base price must be higher than bid start", true, "Should the base price (buy now price) be higher than the initial bid starting price?"); public static final ConfigSetting SYNC_BASE_PRICE_TO_HIGHEST_PRICE = new ConfigSetting(config, "auction setting.sync the base price to the current price", true, "Ex. If the buy now price was 100, and the current price exceeds 100 to say 200, the buy now price will become 200."); public static final ConfigSetting USE_ALTERNATE_CURRENCY_FORMAT = new ConfigSetting(config, "auction setting.use alternate currency format", false, "If true, $123,456.78 will become $123.456,78"); @@ -347,6 +351,22 @@ public class Settings { "&7Click to confirm your bid" )); + /* =============================== + * CONFIRM CANCEL GUI + * ===============================*/ + public static final ConfigSetting GUI_CONFIRM_CANCEL_TITLE = new ConfigSetting(config, "gui.confirm cancel.title", "&7Are you sure?"); + public static final ConfigSetting GUI_CONFIRM_CANCEL_NO_ITEM = new ConfigSetting(config, "gui.confirm cancel.no.item", "RED_STAINED_GLASS_PANE"); + public static final ConfigSetting GUI_CONFIRM_CANCEL_NO_NAME = new ConfigSetting(config, "gui.confirm cancel.no.name", "&c&LCancel"); + public static final ConfigSetting GUI_CONFIRM_CANCEL_NO_LORE = new ConfigSetting(config, "gui.confirm cancel.no.lore", Collections.singletonList( + "&7Click to cancel item removal" + )); + + public static final ConfigSetting GUI_CONFIRM_CANCEL_YES_ITEM = new ConfigSetting(config, "gui.confirm cancel.yes.item", "LIME_STAINED_GLASS_PANE"); + public static final ConfigSetting GUI_CONFIRM_CANCEL_YES_NAME = new ConfigSetting(config, "gui.confirm cancel.yes.name", "&a&lConfirm"); + public static final ConfigSetting GUI_CONFIRM_CANCEL_YES_LORE = new ConfigSetting(config, "gui.confirm cancel.yes.lore", Collections.singletonList( + "&7Click to confirm item cancellation" + )); + /* =============================== * ACTIVE AUCTION GUI * ===============================*/