diff --git a/src/main/java/ca/tweetzy/auctionhouse/api/AuctionAPI.java b/src/main/java/ca/tweetzy/auctionhouse/api/AuctionAPI.java index 88d4c8e..2f3597c 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/api/AuctionAPI.java +++ b/src/main/java/ca/tweetzy/auctionhouse/api/AuctionAPI.java @@ -12,7 +12,6 @@ import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper; import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer; import ca.tweetzy.auctionhouse.managers.SoundManager; import ca.tweetzy.auctionhouse.settings.Settings; -import ca.tweetzy.core.compatibility.CompatibleHand; import ca.tweetzy.core.compatibility.ServerVersion; import ca.tweetzy.core.compatibility.XMaterial; import ca.tweetzy.core.hooks.EconomyManager; @@ -716,8 +715,11 @@ public class AuctionAPI { ItemStack finalItemToSell = item.clone(); int totalOriginal = isUsingBundle ? AuctionAPI.getInstance().getItemCountInPlayerInventory(seller, original) : finalItemToSell.getAmount(); - if (requiresHandRemove) - PlayerUtils.takeActiveItem(seller, CompatibleHand.MAIN_HAND, totalOriginal); + + if (requiresHandRemove) { + removeSpecificItemQuantityFromPlayer(seller, finalItemToSell, totalOriginal); + } +// PlayerUtils.takeActiveItem(seller, CompatibleHand.MAIN_HAND, totalOriginal); SoundManager.getInstance().playSound(seller, Settings.SOUNDS_LISTED_ITEM_ON_AUCTION_HOUSE.getString(), 1.0F, 1.0F); diff --git a/src/main/java/ca/tweetzy/auctionhouse/commands/CommandSell.java b/src/main/java/ca/tweetzy/auctionhouse/commands/CommandSell.java index 27361b8..7e7df72 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/commands/CommandSell.java +++ b/src/main/java/ca/tweetzy/auctionhouse/commands/CommandSell.java @@ -3,10 +3,13 @@ package ca.tweetzy.auctionhouse.commands; import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.api.AuctionAPI; import ca.tweetzy.auctionhouse.auction.AuctionPlayer; +import ca.tweetzy.auctionhouse.auction.AuctionedItem; import ca.tweetzy.auctionhouse.auction.enums.AuctionSaleType; +import ca.tweetzy.auctionhouse.guis.GUIAuctionHouse; import ca.tweetzy.auctionhouse.guis.GUIBundleCreation; import ca.tweetzy.auctionhouse.guis.GUISellItem; -import ca.tweetzy.auctionhouse.guis.confirmation.GUIConfirmListing; +import ca.tweetzy.auctionhouse.guis.confirmation.GUIListingConfirm; +import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer; import ca.tweetzy.auctionhouse.helpers.PlayerHelper; import ca.tweetzy.auctionhouse.settings.Settings; import ca.tweetzy.core.commands.AbstractCommand; @@ -24,6 +27,7 @@ import org.bukkit.inventory.ItemStack; import java.util.Arrays; import java.util.List; +import java.util.UUID; import java.util.stream.Collectors; /** @@ -295,19 +299,66 @@ public final class CommandSell extends AbstractCommand { } if (Settings.ASK_FOR_LISTING_CONFIRMATION.getBoolean()) { - AuctionHouse.getInstance().getGuiManager().showGUI(player, new GUIConfirmListing( - player, - originalItem, - itemToSell, - allowedTime, - /* buy now price */ buyNowAllow ? buyNowPrice : -1, - /* start bid price */ isBiddingItem ? startingBid : 0, - /* bid inc price */ isBiddingItem ? bidIncrement != null ? bidIncrement : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0, - isBiddingItem, - isBundle, - true, - isInfinite - )); + + // TODO clean up is monstrosity + AuctionedItem auctionedItem = new AuctionedItem(); + auctionedItem.setId(UUID.randomUUID()); + auctionedItem.setOwner(player.getUniqueId()); + auctionedItem.setHighestBidder(player.getUniqueId()); + auctionedItem.setOwnerName(player.getName()); + auctionedItem.setHighestBidderName(player.getName()); + auctionedItem.setItem(itemToSell); + auctionedItem.setCategory(MaterialCategorizer.getMaterialCategory(itemToSell)); + auctionedItem.setExpiresAt(System.currentTimeMillis() + 1000L * allowedTime); + auctionedItem.setBidItem(isBiddingItem); + auctionedItem.setExpired(false); + + auctionedItem.setBasePrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(buyNowAllow ? buyNowPrice : -1) : buyNowAllow ? buyNowPrice : -1); + auctionedItem.setBidStartingPrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(isBiddingItem ? startingBid : 0) : isBiddingItem ? startingBid : 0); + auctionedItem.setBidIncrementPrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(isBiddingItem ? bidIncrement != null ? bidIncrement : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0) : isBiddingItem ? bidIncrement != null ? bidIncrement : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0); + auctionedItem.setCurrentPrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(isBiddingItem ? startingBid : buyNowPrice <= -1 ? startingBid : buyNowPrice) : isBiddingItem ? startingBid : buyNowPrice <= -1 ? startingBid : buyNowPrice); + + auctionedItem.setListedWorld(player.getWorld().getName()); + auctionedItem.setInfinite(isInfinite); + auctionedItem.setAllowPartialBuy(partialBuy); + + ItemStack finalItemToSell = itemToSell; + int finalAllowedTime = allowedTime; + Double finalBuyNowPrice = buyNowPrice; + Double finalStartingBid = startingBid; + Double finalBidIncrement = bidIncrement; + Double finalStartingBid1 = startingBid; + boolean finalIsInfinite = isInfinite; + boolean finalPartialBuy = partialBuy; + boolean finalIsBundle = isBundle; + + AuctionHouse.getInstance().getGuiManager().showGUI(player, new GUIListingConfirm(player, auctionedItem, result -> { + if (!result) { + player.closeInventory(); + return; + } + + AuctionAPI.getInstance().listAuction( + player, + originalItem, + finalItemToSell, + finalAllowedTime, + /* buy now price */ buyNowAllow ? finalBuyNowPrice : -1, + /* start bid price */ isBiddingItem ? finalStartingBid : !buyNowAllow ? finalBuyNowPrice : 0, + /* bid inc price */ isBiddingItem ? finalBidIncrement != null ? finalBidIncrement : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0, + /* current price */ isBiddingItem ? finalStartingBid : finalBuyNowPrice <= -1 ? finalStartingBid1 : finalBuyNowPrice, + isBiddingItem || !buyNowAllow, + finalIsBundle, + true, + finalIsInfinite, + finalPartialBuy + ); + + player.closeInventory(); + if (Settings.OPEN_MAIN_AUCTION_HOUSE_AFTER_MENU_LIST.getBoolean()) { + AuctionHouse.getInstance().getGuiManager().showGUI(player, new GUIAuctionHouse(AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(player.getUniqueId()))); + } + })); } else { AuctionAPI.getInstance().listAuction( player, diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIBundleCreation.java b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIBundleCreation.java index edaefd2..6dd3a21 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/guis/GUIBundleCreation.java +++ b/src/main/java/ca/tweetzy/auctionhouse/guis/GUIBundleCreation.java @@ -3,8 +3,10 @@ package ca.tweetzy.auctionhouse.guis; import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.api.AuctionAPI; import ca.tweetzy.auctionhouse.auction.AuctionPlayer; -import ca.tweetzy.auctionhouse.guis.confirmation.GUIConfirmListing; +import ca.tweetzy.auctionhouse.auction.AuctionedItem; +import ca.tweetzy.auctionhouse.guis.confirmation.GUIListingConfirm; import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper; +import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer; import ca.tweetzy.auctionhouse.settings.Settings; import ca.tweetzy.core.compatibility.XMaterial; import ca.tweetzy.core.utils.PlayerUtils; @@ -15,6 +17,7 @@ import org.bukkit.inventory.ItemStack; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.UUID; import java.util.stream.Collectors; /** @@ -117,19 +120,55 @@ public final class GUIBundleCreation extends AbstractPlaceholderGui { if (Settings.ASK_FOR_LISTING_CONFIRMATION.getBoolean()) { - AuctionHouse.getInstance().getGuiManager().showGUI(player.getPlayer(), new GUIConfirmListing( - player.getPlayer(), - validItems.size() > 1 ? firstItem : validItems.get(0), - validItems.size() > 1 ? bundle : validItems.get(0), - allowedTime, - /* buy now price */ buyNowAllow ? buyNowPrice : -1, - /* start bid price */ isBiddingItem ? startingBid : !buyNowAllow ? buyNowPrice : 0, - /* bid inc price */ isBiddingItem ? bidIncrement != null ? bidIncrement : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0, - isBiddingItem, - true, - validItems.size() > 1, - false - )); + // TODO clean up is monstrosity + AuctionedItem auctionedItem = new AuctionedItem(); + auctionedItem.setId(UUID.randomUUID()); + auctionedItem.setOwner(e.player.getUniqueId()); + auctionedItem.setHighestBidder(e.player.getUniqueId()); + auctionedItem.setOwnerName(e.player.getName()); + auctionedItem.setHighestBidderName(e.player.getName()); + auctionedItem.setItem(validItems.size() > 1 ? bundle : validItems.get(0)); + auctionedItem.setCategory(MaterialCategorizer.getMaterialCategory(validItems.size() > 1 ? bundle : validItems.get(0))); + auctionedItem.setExpiresAt(System.currentTimeMillis() + 1000L * allowedTime); + auctionedItem.setBidItem(isBiddingItem); + auctionedItem.setExpired(false); + + auctionedItem.setBasePrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(buyNowAllow ? buyNowPrice : -1) : buyNowAllow ? buyNowPrice : -1); + auctionedItem.setBidStartingPrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(isBiddingItem ? startingBid : !buyNowAllow ? buyNowPrice : 0) : isBiddingItem ? startingBid : !buyNowAllow ? buyNowPrice : 0); + auctionedItem.setBidIncrementPrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(isBiddingItem ? bidIncrement != null ? bidIncrement : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0) : isBiddingItem ? bidIncrement != null ? bidIncrement : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0); + auctionedItem.setCurrentPrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(isBiddingItem ? startingBid : buyNowPrice <= -1 ? startingBid : buyNowPrice) : isBiddingItem ? startingBid : buyNowPrice <= -1 ? startingBid : buyNowPrice); + + auctionedItem.setListedWorld(e.player.getWorld().getName()); + auctionedItem.setInfinite(false); + auctionedItem.setAllowPartialBuy(false); + + ItemStack finalFirstItem = firstItem; + AuctionHouse.getInstance().getGuiManager().showGUI(e.player, new GUIListingConfirm(e.player, auctionedItem, result -> { + if (!result) { + e.player.closeInventory(); + return; + } + + AuctionAPI.getInstance().listAuction( + player.getPlayer(), + validItems.size() > 1 ? finalFirstItem : validItems.get(0), + validItems.size() > 1 ? bundle : validItems.get(0), + allowedTime, + /* buy now price */ buyNowAllow ? buyNowPrice : -1, + /* start bid price */ isBiddingItem ? startingBid : !buyNowAllow ? buyNowPrice : 0, + /* bid inc price */ isBiddingItem ? bidIncrement != null ? bidIncrement : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0, + /* current price */ isBiddingItem ? startingBid : buyNowPrice <= -1 ? startingBid : buyNowPrice, + isBiddingItem || !buyNowAllow, + validItems.size() > 1, + false + ); + + e.gui.exit(); + if (Settings.OPEN_MAIN_AUCTION_HOUSE_AFTER_MENU_LIST.getBoolean()) { + e.manager.showGUI(e.player, new GUIAuctionHouse(player)); + } + })); + } else { AuctionAPI.getInstance().listAuction( player.getPlayer(), diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/GUISellItem.java b/src/main/java/ca/tweetzy/auctionhouse/guis/GUISellItem.java index fb519b3..96387c5 100644 --- a/src/main/java/ca/tweetzy/auctionhouse/guis/GUISellItem.java +++ b/src/main/java/ca/tweetzy/auctionhouse/guis/GUISellItem.java @@ -3,9 +3,11 @@ package ca.tweetzy.auctionhouse.guis; import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.api.AuctionAPI; import ca.tweetzy.auctionhouse.auction.AuctionPlayer; +import ca.tweetzy.auctionhouse.auction.AuctionedItem; import ca.tweetzy.auctionhouse.auction.enums.AuctionSaleType; -import ca.tweetzy.auctionhouse.guis.confirmation.GUIConfirmListing; +import ca.tweetzy.auctionhouse.guis.confirmation.GUIListingConfirm; import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper; +import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer; import ca.tweetzy.auctionhouse.settings.Settings; import ca.tweetzy.core.compatibility.XMaterial; import ca.tweetzy.core.gui.events.GuiClickEvent; @@ -22,6 +24,7 @@ import org.bukkit.inventory.ItemStack; import java.util.Arrays; import java.util.HashMap; import java.util.List; +import java.util.UUID; import java.util.stream.Collectors; /** @@ -36,9 +39,9 @@ public class GUISellItem extends AbstractPlaceholderGui { private final AuctionPlayer auctionPlayer; private ItemStack itemToBeListed; - private double buyNowPrice; - private double bidStartPrice; - private double bidIncrementPrice; + private Double buyNowPrice; + private Double bidStartPrice; + private Double bidIncrementPrice; private boolean isBiddingItem; private boolean isAllowingBuyNow; private int auctionTime; @@ -119,7 +122,7 @@ public class GUISellItem extends AbstractPlaceholderGui { } public GUISellItem(AuctionPlayer auctionPlayer, ItemStack itemToBeListed) { - this(auctionPlayer, itemToBeListed, Settings.MIN_AUCTION_PRICE.getDouble(), Settings.MIN_AUCTION_START_PRICE.getDouble(),Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble(), false, true, auctionPlayer.getAllowedSellTime(AuctionSaleType.WITHOUT_BIDDING_SYSTEM)); + this(auctionPlayer, itemToBeListed, Settings.MIN_AUCTION_PRICE.getDouble(), Settings.MIN_AUCTION_START_PRICE.getDouble(), Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble(), false, true, auctionPlayer.getAllowedSellTime(AuctionSaleType.WITHOUT_BIDDING_SYSTEM)); } private void draw() { @@ -346,19 +349,61 @@ public class GUISellItem extends AbstractPlaceholderGui { } setAllowClose(true); - AuctionHouse.getInstance().getGuiManager().showGUI(e.player, new GUIConfirmListing( - e.player, - this.itemToBeListed.clone(), - this.itemToBeListed.clone(), - this.auctionTime, - this.isBiddingItem && !isAllowingBuyNow || !Settings.ALLOW_USAGE_OF_BUY_NOW_SYSTEM.getBoolean() ? -1 : buyNowPrice, - this.isBiddingItem ? bidStartPrice : 0, - Settings.FORCE_CUSTOM_BID_AMOUNT.getBoolean() ? 1 : this.isBiddingItem ? bidIncrementPrice : 0, - this.isBiddingItem, - false, - false, - false - )); + + // TODO clean up is monstrosity + AuctionedItem auctionedItem = new AuctionedItem(); + auctionedItem.setId(UUID.randomUUID()); + auctionedItem.setOwner(e.player.getUniqueId()); + auctionedItem.setHighestBidder(e.player.getUniqueId()); + auctionedItem.setOwnerName(e.player.getName()); + auctionedItem.setHighestBidderName(e.player.getName()); + auctionedItem.setItem(this.itemToBeListed.clone()); + auctionedItem.setCategory(MaterialCategorizer.getMaterialCategory(this.itemToBeListed.clone())); + auctionedItem.setExpiresAt(System.currentTimeMillis() + 1000L * this.auctionTime); + auctionedItem.setBidItem(isBiddingItem); + auctionedItem.setExpired(false); + + auctionedItem.setBasePrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(this.isAllowingBuyNow ? buyNowPrice : -1) : this.isAllowingBuyNow ? buyNowPrice : -1); + auctionedItem.setBidStartingPrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(this.isBiddingItem ? this.bidStartPrice : 0) : this.isBiddingItem ? this.bidStartPrice : 0); + auctionedItem.setBidIncrementPrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(this.isBiddingItem ? this.bidIncrementPrice != null ? this.bidIncrementPrice : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0) : this.isBiddingItem ? this.bidIncrementPrice != null ? this.bidIncrementPrice : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0); + auctionedItem.setCurrentPrice(Settings.ROUND_ALL_PRICES.getBoolean() ? Math.round(this.isBiddingItem ? this.bidStartPrice : this.buyNowPrice <= -1 ? this.bidStartPrice : this.buyNowPrice) : this.isBiddingItem ? this.bidStartPrice : this.buyNowPrice <= -1 ? this.bidStartPrice : this.buyNowPrice); + + auctionedItem.setListedWorld(e.player.getWorld().getName()); + auctionedItem.setInfinite(false); + auctionedItem.setAllowPartialBuy(false); + + AuctionHouse.getInstance().getGuiManager().showGUI(e.player, new GUIListingConfirm(e.player, auctionedItem, result -> { + if (!result) { + e.player.closeInventory(); + if (!this.acceptsItems || this.itemToBeListed != null && this.itemToBeListed.getType() != XMaterial.AIR.parseMaterial()) + PlayerUtils.giveItem(e.player, this.itemToBeListed); + return; + } + + AuctionAPI.getInstance().listAuction( + e.player, + this.itemToBeListed.clone(), + this.itemToBeListed.clone(), + this.auctionTime, + /* buy now price */ this.isAllowingBuyNow ? this.buyNowPrice : -1, + /* start bid price */ isBiddingItem ? this.bidStartPrice : !this.isAllowingBuyNow ? this.buyNowPrice : 0, + /* bid inc price */ isBiddingItem ? this.bidIncrementPrice != null ? this.bidIncrementPrice : Settings.MIN_AUCTION_INCREMENT_PRICE.getDouble() : 0, + /* current price */ isBiddingItem ? this.bidStartPrice : this.buyNowPrice <= -1 ? this.bidStartPrice : this.buyNowPrice, + isBiddingItem || !this.isAllowingBuyNow, + false, + false, + false, + false + ); + + e.player.closeInventory(); + + e.player.closeInventory(); + if (Settings.OPEN_MAIN_AUCTION_HOUSE_AFTER_MENU_LIST.getBoolean()) { + e.manager.showGUI(e.player, new GUIAuctionHouse(this.auctionPlayer)); + } + })); + } else { if (!this.auctionPlayer.canListItem()) { return; diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/confirmation/GUIConfirmListing.java b/src/main/java/ca/tweetzy/auctionhouse/guis/confirmation/GUIConfirmListing.java deleted file mode 100644 index 59e87c7..0000000 --- a/src/main/java/ca/tweetzy/auctionhouse/guis/confirmation/GUIConfirmListing.java +++ /dev/null @@ -1,125 +0,0 @@ -package ca.tweetzy.auctionhouse.guis.confirmation; - -import ca.tweetzy.auctionhouse.AuctionHouse; -import ca.tweetzy.auctionhouse.api.AuctionAPI; -import ca.tweetzy.auctionhouse.auction.AuctionedItem; -import ca.tweetzy.auctionhouse.auction.enums.AuctionStackType; -import ca.tweetzy.auctionhouse.guis.AbstractPlaceholderGui; -import ca.tweetzy.auctionhouse.guis.GUIAuctionHouse; -import ca.tweetzy.auctionhouse.helpers.MaterialCategorizer; -import ca.tweetzy.auctionhouse.settings.Settings; -import ca.tweetzy.core.utils.TextUtils; -import ca.tweetzy.core.utils.items.TItemBuilder; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; -import org.bukkit.inventory.ItemStack; - -import java.util.Objects; -import java.util.UUID; - -/** - * The current file has been created by Kiran Hart - * Date Created: March 17 2021 - * Time Created: 11:18 p.m. - * Usage of any code found within this class is prohibited unless given explicit permission otherwise - */ -public class GUIConfirmListing extends AbstractPlaceholderGui { - - private final Player player; - private final ItemStack originalItem; - private final ItemStack itemToSell; - private final int allowedTime; - private final Double basePrice; - private final Double startingBid; - private final Double bidIncrement; - private final boolean isBiddingItem; - private final boolean isBundle; - private final boolean requiresHandRemove; - private final boolean isInfinite; - - private final AuctionedItem auctionedItem; - - public GUIConfirmListing(Player player, ItemStack originalItem, ItemStack itemToSell, int allowedTime, double basePrice, double startingBid, double bidIncrement, boolean isBiddingItem, boolean bundle, boolean requiresHandRemove, boolean isInfinite) { - super(player); - this.player = player; - this.originalItem = originalItem; - this.itemToSell = itemToSell; - this.allowedTime = allowedTime; - this.basePrice = basePrice; - this.startingBid = startingBid; - this.bidIncrement = bidIncrement; - this.isBiddingItem = isBiddingItem; - this.isBundle = bundle; - this.requiresHandRemove = requiresHandRemove; - this.isInfinite = isInfinite; - - this.auctionedItem = new AuctionedItem( - UUID.randomUUID(), - player.getUniqueId(), - player.getUniqueId(), - player.getName(), - player.getName(), - MaterialCategorizer.getMaterialCategory(this.originalItem), - this.itemToSell.clone(), - /* buy now price */ Settings.ALLOW_USAGE_OF_BUY_NOW_SYSTEM.getBoolean() ? this.basePrice : -1, - /* start bid price */ this.isBiddingItem ? this.startingBid : 0, - /* bid inc price */ this.isBiddingItem ? this.bidIncrement != null ? this.bidIncrement : 1 : 0, - /* current price */ this.isBiddingItem ? this.startingBid : this.basePrice <= -1 ? this.startingBid : this.basePrice, - this.isBiddingItem, - false, - System.currentTimeMillis() + (this.allowedTime * 1000L) - ); - - // todo add back if dupe is brought back to life -// setOnOpen(open -> PlayerUtils.takeActiveItem(open.player, CompatibleHand.MAIN_HAND, originalItem.getAmount())); -// setOnClose(close -> close.player.getInventory().addItem(originalItem)); - - setTitle(TextUtils.formatText(Settings.GUI_CONFIRM_LISTING_TITLE.getString())); - setAcceptsItems(false); - setRows(1); - draw(); - } - - private void placeAuctionItem() { - setItem(0, 4, this.auctionedItem.getDisplayStack(AuctionStackType.LISTING_PREVIEW)); - } - - private void draw() { - setItems(0, 3, new TItemBuilder(Objects.requireNonNull(Settings.GUI_CONFIRM_LISTING_YES_ITEM.getMaterial().parseMaterial())).setName(Settings.GUI_CONFIRM_LISTING_YES_NAME.getString()).setLore(Settings.GUI_CONFIRM_LISTING_YES_LORE.getStringList()).toItemStack()); - placeAuctionItem(); - setItems(5, 8, new TItemBuilder(Objects.requireNonNull(Settings.GUI_CONFIRM_LISTING_NO_ITEM.getMaterial().parseMaterial())).setName(Settings.GUI_CONFIRM_LISTING_NO_NAME.getString()).setLore(Settings.GUI_CONFIRM_LISTING_NO_LORE.getStringList()).toItemStack()); - - setActionForRange(5, 8, ClickType.LEFT, e -> { - e.gui.exit(); - e.player.getInventory().addItem(originalItem); - }); - - setActionForRange(0, 3, ClickType.LEFT, e -> { - AuctionHouse.getInstance().getAuctionPlayerManager().removeItemFromSellHolding(e.player.getUniqueId()); - AuctionHouse.getInstance().getAuctionPlayerManager().removeFromUsingSellGUI(e.player.getUniqueId()); - - AuctionAPI.getInstance().listAuction( - this.player, - this.originalItem, - this.itemToSell, - this.allowedTime, - /* buy now price */ Settings.ALLOW_USAGE_OF_BUY_NOW_SYSTEM.getBoolean() ? this.basePrice : -1, - /* start bid price */ this.isBiddingItem ? this.startingBid : 0, - /* bid inc price */ this.isBiddingItem ? this.bidIncrement != null ? this.bidIncrement : 1 : 0, - /* current price */ this.isBiddingItem ? this.startingBid : this.basePrice <= -1 ? this.startingBid : this.basePrice, - this.isBiddingItem, - this.isBundle, - this.requiresHandRemove, - this.isInfinite, - false - ); - - - if (Settings.OPEN_MAIN_AUCTION_HOUSE_AFTER_MENU_LIST.getBoolean()) { - e.manager.showGUI(e.player, new GUIAuctionHouse(AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(e.player.getUniqueId()))); - } else { - e.gui.exit(); - } - }); - } -} diff --git a/src/main/java/ca/tweetzy/auctionhouse/guis/confirmation/GUIListingConfirm.java b/src/main/java/ca/tweetzy/auctionhouse/guis/confirmation/GUIListingConfirm.java new file mode 100644 index 0000000..cd214c1 --- /dev/null +++ b/src/main/java/ca/tweetzy/auctionhouse/guis/confirmation/GUIListingConfirm.java @@ -0,0 +1,64 @@ +/* + * Auction House + * Copyright 2022 Kiran Hart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package ca.tweetzy.auctionhouse.guis.confirmation; + +import ca.tweetzy.auctionhouse.auction.AuctionedItem; +import ca.tweetzy.auctionhouse.auction.enums.AuctionStackType; +import ca.tweetzy.auctionhouse.guis.AbstractPlaceholderGui; +import ca.tweetzy.auctionhouse.settings.Settings; +import ca.tweetzy.core.utils.TextUtils; +import ca.tweetzy.core.utils.items.TItemBuilder; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import java.util.Objects; +import java.util.function.Consumer; + +public final class GUIListingConfirm extends AbstractPlaceholderGui { + + private final AuctionedItem auctionedItem; + private final Consumer result; + + public GUIListingConfirm(Player player, AuctionedItem auctionedItem, Consumer result) { + super(player); + this.auctionedItem = auctionedItem; + this.result = result; + super.setTitle(TextUtils.formatText(Settings.GUI_CONFIRM_LISTING_TITLE.getString())); + setAcceptsItems(false); + setAllowClose(false); + setRows(1); + draw(); + } + + private void draw() { + setItems(0, 3, new TItemBuilder(Objects.requireNonNull(Settings.GUI_CONFIRM_LISTING_YES_ITEM.getMaterial().parseMaterial())).setName(Settings.GUI_CONFIRM_LISTING_YES_NAME.getString()).setLore(Settings.GUI_CONFIRM_LISTING_YES_LORE.getStringList()).toItemStack()); + setItem(0, 4, this.auctionedItem.getDisplayStack(AuctionStackType.LISTING_PREVIEW)); + setItems(5, 8, new TItemBuilder(Objects.requireNonNull(Settings.GUI_CONFIRM_LISTING_NO_ITEM.getMaterial().parseMaterial())).setName(Settings.GUI_CONFIRM_LISTING_NO_NAME.getString()).setLore(Settings.GUI_CONFIRM_LISTING_NO_LORE.getStringList()).toItemStack()); + + setActionForRange(5, 8, ClickType.LEFT, e -> { + setAllowClose(true); + this.result.accept(false); + }); + setActionForRange(0, 3, ClickType.LEFT, e -> { + setAllowClose(true); + this.result.accept(true); + }); + } + +}