This commit is contained in:
Kiran Hart 2021-05-20 11:43:10 -04:00
parent 36fc5feffe
commit 3ecc12541b
6 changed files with 84 additions and 14 deletions

View File

@ -6,7 +6,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>ca.tweetzy</groupId>
<artifactId>auctionhouse</artifactId>
<version>2.10.1</version>
<version>2.11.0</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

View File

@ -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;

View File

@ -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));
});
}
}

View File

@ -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));
}

View File

@ -42,13 +42,6 @@ public class AuctionItemManager {
return this.auctionItems;
}
public List<AuctionItem> 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));

View File

@ -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
* ===============================*/