2.19.0 Iteration changes + inspection of containers from the purchase menu

This commit is contained in:
Kiran Hart 2021-07-08 19:26:39 -04:00
parent 2623277ef4
commit 64bd512322
5 changed files with 73 additions and 15 deletions

View File

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

View File

@ -167,6 +167,7 @@ public class GUIAuctionHouse extends Gui {
cleanup();
e.manager.showGUI(e.player, new GUIConfirmPurchase(this.auctionPlayer, auctionItem, false));
AuctionHouse.getInstance().getTransactionManager().addPrePurchase(e.player, auctionItem.getKey());
}
return;
}

View File

@ -2,6 +2,9 @@ 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.guis.confirmation.GUIConfirmPurchase;
import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper;
import ca.tweetzy.auctionhouse.settings.Settings;
import ca.tweetzy.core.gui.Gui;
@ -26,9 +29,14 @@ import java.util.stream.Collectors;
*/
public class GUIContainerInspect extends Gui {
final int[] fillSlots = {0, 1, 2, 3, 4, 5, 6, 7, 8, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 46, 47, 48, 50, 51, 52, 53};
final ItemStack container;
List<ItemStack> items;
private final int[] fillSlots = {0, 1, 2, 3, 4, 5, 6, 7, 8, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 46, 47, 48, 50, 51, 52, 53};
private final ItemStack container;
private List<ItemStack> items;
private AuctionPlayer auctionPlayer;
private AuctionItem auctionItem;
private boolean buyingSpecificQuantity;
private boolean fromPurchaseGUI;
/**
* Used to inspect a shulker box from it's item stack.
@ -37,6 +45,7 @@ public class GUIContainerInspect extends Gui {
*/
public GUIContainerInspect(ItemStack container) {
this.container = container;
this.fromPurchaseGUI = false;
setTitle(TextUtils.formatText(Settings.GUI_INSPECT_TITLE.getString()));
setDefaultItem(Settings.GUI_INSPECT_BG_ITEM.getMaterial().parseItem());
setUseLockedCells(false);
@ -64,6 +73,20 @@ public class GUIContainerInspect extends Gui {
setOnClose(close -> close.manager.showGUI(close.player, new GUIAuctionHouse(AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(close.player.getUniqueId()))));
}
public GUIContainerInspect(ItemStack container, AuctionPlayer auctionPlayer, AuctionItem auctionItem, boolean buyingSpecificQuantity) {
this(container);
this.auctionPlayer = auctionPlayer;
this.auctionItem = auctionItem;
this.buyingSpecificQuantity = buyingSpecificQuantity;
this.fromPurchaseGUI = true;
// Overwrite the default close, since they are accessing the inspection from the purchase screen
setOnClose(close -> {
AuctionHouse.getInstance().getTransactionManager().addPrePurchase(close.player, auctionItem.getKey());
close.manager.showGUI(close.player, new GUIConfirmPurchase(this.auctionPlayer, this.auctionItem, this.buyingSpecificQuantity));
});
}
private void draw() {
reset();
pages = (int) Math.max(1, Math.ceil(this.items.size() / (double) 27L));
@ -71,7 +94,14 @@ public class GUIContainerInspect extends Gui {
for (int i : fillSlots) setItem(i, getDefaultItem());
setPrevPage(5, 3, new TItemBuilder(Objects.requireNonNull(Settings.GUI_BACK_BTN_ITEM.getMaterial().parseMaterial())).setName(Settings.GUI_BACK_BTN_NAME.getString()).setLore(Settings.GUI_BACK_BTN_LORE.getStringList()).toItemStack());
setButton(5, 4, ConfigurationItemHelper.createConfigurationItem(Settings.GUI_CLOSE_BTN_ITEM.getString(), Settings.GUI_CLOSE_BTN_NAME.getString(), Settings.GUI_CLOSE_BTN_LORE.getStringList(), null), e -> e.manager.showGUI(e.player, new GUIAuctionHouse(AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(e.player.getUniqueId()))));
setButton(5, 4, ConfigurationItemHelper.createConfigurationItem(Settings.GUI_CLOSE_BTN_ITEM.getString(), Settings.GUI_CLOSE_BTN_NAME.getString(), Settings.GUI_CLOSE_BTN_LORE.getStringList(), null), e -> {
if (fromPurchaseGUI) {
AuctionHouse.getInstance().getTransactionManager().addPrePurchase(e.player, auctionItem.getKey());
e.manager.showGUI(e.player, new GUIConfirmPurchase(this.auctionPlayer, this.auctionItem, this.buyingSpecificQuantity));
} else {
e.manager.showGUI(e.player, new GUIAuctionHouse(AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(e.player.getUniqueId())));
}
});
setNextPage(5, 5, new TItemBuilder(Objects.requireNonNull(Settings.GUI_NEXT_BTN_ITEM.getMaterial().parseMaterial())).setName(Settings.GUI_NEXT_BTN_NAME.getString()).setLore(Settings.GUI_NEXT_BTN_LORE.getStringList()).toItemStack());
setOnPage(e -> draw());

View File

@ -8,6 +8,7 @@ import ca.tweetzy.auctionhouse.auction.AuctionPlayer;
import ca.tweetzy.auctionhouse.auction.AuctionSaleType;
import ca.tweetzy.auctionhouse.exception.ItemNotFoundException;
import ca.tweetzy.auctionhouse.guis.GUIAuctionHouse;
import ca.tweetzy.auctionhouse.guis.GUIContainerInspect;
import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper;
import ca.tweetzy.auctionhouse.managers.SoundManager;
import ca.tweetzy.auctionhouse.settings.Settings;
@ -18,9 +19,11 @@ 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.block.ShulkerBox;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BlockStateMeta;
import java.util.HashMap;
import java.util.Objects;
@ -73,10 +76,21 @@ public class GUIConfirmPurchase extends Gui {
}
private void draw() {
ItemStack deserializeItem = AuctionAPI.getInstance().deserializeItem(this.auctionItem.getRawItem());
setItems(this.buyingSpecificQuantity ? 9 : 0, this.buyingSpecificQuantity ? 12 : 3, new TItemBuilder(Objects.requireNonNull(Settings.GUI_CONFIRM_BUY_YES_ITEM.getMaterial().parseMaterial())).setName(Settings.GUI_CONFIRM_BUY_YES_NAME.getString()).setLore(Settings.GUI_CONFIRM_BUY_YES_LORE.getStringList()).toItemStack());
setItem(this.buyingSpecificQuantity ? 1 : 0, 4, AuctionAPI.getInstance().deserializeItem(this.auctionItem.getRawItem()));
setItem(this.buyingSpecificQuantity ? 1 : 0, 4, deserializeItem);
setItems(this.buyingSpecificQuantity ? 14 : 5, this.buyingSpecificQuantity ? 17 : 8, new TItemBuilder(Objects.requireNonNull(Settings.GUI_CONFIRM_BUY_NO_ITEM.getMaterial().parseMaterial())).setName(Settings.GUI_CONFIRM_BUY_NO_NAME.getString()).setLore(Settings.GUI_CONFIRM_BUY_NO_LORE.getStringList()).toItemStack());
setAction(this.buyingSpecificQuantity ? 1 : 0, 4, ClickType.LEFT, e -> {
if (deserializeItem.getItemMeta() instanceof BlockStateMeta) {
if (((BlockStateMeta) deserializeItem.getItemMeta()).getBlockState() instanceof ShulkerBox) {
AuctionHouse.getInstance().getTransactionManager().getPrePurchaseHolding().remove(e.player);
e.manager.showGUI(e.player, new GUIContainerInspect(e.clickedItem, this.auctionPlayer, this.auctionItem, this.buyingSpecificQuantity));
}
}
});
setActionForRange(this.buyingSpecificQuantity ? 14 : 5, this.buyingSpecificQuantity ? 17 : 8, ClickType.LEFT, e -> {
e.gui.close();
});

View File

@ -7,10 +7,7 @@ import ca.tweetzy.core.utils.TextUtils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@ -23,7 +20,7 @@ import java.util.stream.Collectors;
public class TransactionManager {
private final ConcurrentHashMap<UUID, Transaction> transactions = new ConcurrentHashMap<>();
private final HashMap<Player, UUID> prePurchaseHolding = new HashMap<>();
private final ConcurrentHashMap<Player, UUID> prePurchaseHolding = new ConcurrentHashMap<>();
public void addTransaction(Transaction transaction) {
if (transaction == null) return;
@ -43,11 +40,27 @@ public class TransactionManager {
}
public int getTotalItemsBought(UUID buyer) {
return (int) this.transactions.entrySet().stream().filter(set -> set.getValue().getBuyer().equals(buyer)).count();
int total = 0;
Iterator<Map.Entry<UUID, Transaction>> iterator = this.transactions.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<UUID, Transaction> entry = iterator.next();
if (entry.getValue().getBuyer().equals(buyer)) {
total++;
}
}
return total;
}
public int getTotalItemsSold(UUID seller) {
return (int) this.transactions.entrySet().stream().filter(set -> set.getValue().getSeller().equals(seller)).count();
int total = 0;
Iterator<Map.Entry<UUID, Transaction>> iterator = this.transactions.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<UUID, Transaction> entry = iterator.next();
if (entry.getValue().getSeller().equals(seller)) {
total++;
}
}
return total;
}
public void addPrePurchase(Player player, UUID uuid) {
@ -58,8 +71,8 @@ public class TransactionManager {
this.prePurchaseHolding.keySet().removeIf(p -> this.prePurchaseHolding.get(p).equals(uuid));
}
public HashMap<Player, UUID> getPrePurchaseHolding() {
return prePurchaseHolding;
public ConcurrentHashMap<Player, UUID> getPrePurchaseHolding() {
return this.prePurchaseHolding;
}
public List<Player> getPrePurchasePlayers(UUID uuid) {