mirror of
https://github.com/kiranhart/Auction-House.git
synced 2024-11-29 06:35:28 +01:00
possible fix for buy confirmation
This commit is contained in:
parent
0448a9a316
commit
36fc5feffe
2
pom.xml
2
pom.xml
@ -136,7 +136,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>ca.tweetzy</groupId>
|
<groupId>ca.tweetzy</groupId>
|
||||||
<artifactId>tweetycore</artifactId>
|
<artifactId>tweetycore</artifactId>
|
||||||
<version>2.1.2</version>
|
<version>2.2.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.MilkBowl</groupId>
|
<groupId>com.github.MilkBowl</groupId>
|
||||||
|
@ -22,6 +22,7 @@ import ca.tweetzy.core.database.DataMigrationManager;
|
|||||||
import ca.tweetzy.core.database.DatabaseConnector;
|
import ca.tweetzy.core.database.DatabaseConnector;
|
||||||
import ca.tweetzy.core.database.MySQLConnector;
|
import ca.tweetzy.core.database.MySQLConnector;
|
||||||
import ca.tweetzy.core.gui.GuiManager;
|
import ca.tweetzy.core.gui.GuiManager;
|
||||||
|
import ca.tweetzy.core.locale.Locale;
|
||||||
import ca.tweetzy.core.utils.Metrics;
|
import ca.tweetzy.core.utils.Metrics;
|
||||||
import co.aikar.taskchain.BukkitTaskChainFactory;
|
import co.aikar.taskchain.BukkitTaskChainFactory;
|
||||||
import co.aikar.taskchain.TaskChain;
|
import co.aikar.taskchain.TaskChain;
|
||||||
|
@ -29,14 +29,18 @@ public class AuctionEndEvent extends Event implements Cancellable {
|
|||||||
private AuctionItem auctionItem;
|
private AuctionItem auctionItem;
|
||||||
private AuctionSaleType saleType;
|
private AuctionSaleType saleType;
|
||||||
|
|
||||||
public AuctionEndEvent(OfflinePlayer originalOwner, OfflinePlayer buyer, AuctionItem auctionItem, AuctionSaleType saleType) {
|
public AuctionEndEvent(OfflinePlayer originalOwner, OfflinePlayer buyer, AuctionItem auctionItem, AuctionSaleType saleType, boolean async) {
|
||||||
super(true);
|
super(async);
|
||||||
this.originalOwner = originalOwner;
|
this.originalOwner = originalOwner;
|
||||||
this.buyer = buyer;
|
this.buyer = buyer;
|
||||||
this.auctionItem = auctionItem;
|
this.auctionItem = auctionItem;
|
||||||
this.saleType = saleType;
|
this.saleType = saleType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AuctionEndEvent(OfflinePlayer originalOwner, OfflinePlayer buyer, AuctionItem auctionItem, AuctionSaleType saleType) {
|
||||||
|
this(originalOwner, buyer, auctionItem, saleType, true);
|
||||||
|
}
|
||||||
|
|
||||||
public HandlerList getHandlers() {
|
public HandlerList getHandlers() {
|
||||||
return handlers;
|
return handlers;
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ public class AuctionItem implements Serializable {
|
|||||||
lore.addAll(Settings.AUCTION_PURCHASE_CONTROL_HEADER.getStringList().stream().map(TextUtils::formatText).collect(Collectors.toList()));
|
lore.addAll(Settings.AUCTION_PURCHASE_CONTROL_HEADER.getStringList().stream().map(TextUtils::formatText).collect(Collectors.toList()));
|
||||||
lore.addAll(this.bidStartPrice <= 0 || this.bidIncPrice <= 0 ? Settings.AUCTION_PURCHASE_CONTROLS_BID_OFF.getStringList().stream().map(TextUtils::formatText).collect(Collectors.toList()) : Settings.AUCTION_PURCHASE_CONTROLS_BID_ON.getStringList().stream().map(TextUtils::formatText).collect(Collectors.toList()));
|
lore.addAll(this.bidStartPrice <= 0 || this.bidIncPrice <= 0 ? Settings.AUCTION_PURCHASE_CONTROLS_BID_OFF.getStringList().stream().map(TextUtils::formatText).collect(Collectors.toList()) : Settings.AUCTION_PURCHASE_CONTROLS_BID_ON.getStringList().stream().map(TextUtils::formatText).collect(Collectors.toList()));
|
||||||
|
|
||||||
if ((ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11) && itemStack.getType() == XMaterial.SHULKER_BOX.parseMaterial()) || (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_14) && itemStack.getType() == XMaterial.SHULKER_BOX.parseMaterial() || itemStack.getType() == XMaterial.BARREL.parseMaterial())) {
|
if ((ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11) && itemStack.getType().name().contains("SHULKER_BOX")) || (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_14) && itemStack.getType() == XMaterial.SHULKER_BOX.parseMaterial() || itemStack.getType() == XMaterial.BARREL.parseMaterial())) {
|
||||||
lore.addAll(Settings.AUCTION_PURCHASE_CONTROLS_INSPECTION.getStringList().stream().map(TextUtils::formatText).collect(Collectors.toList()));
|
lore.addAll(Settings.AUCTION_PURCHASE_CONTROLS_INSPECTION.getStringList().stream().map(TextUtils::formatText).collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,6 +119,7 @@ public class GUIAuctionHouse extends Gui {
|
|||||||
|
|
||||||
cleanup();
|
cleanup();
|
||||||
e.manager.showGUI(e.player, new GUIConfirmPurchase(this.auctionPlayer, auctionItem, buyingQuantity));
|
e.manager.showGUI(e.player, new GUIConfirmPurchase(this.auctionPlayer, auctionItem, buyingQuantity));
|
||||||
|
AuctionHouse.getInstance().getTransactionManager().addPrePurchase(e.player, auctionItem.getKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleBidItem(AuctionItem auctionItem, GuiClickEvent e, boolean buyNow) {
|
private void handleBidItem(AuctionItem auctionItem, GuiClickEvent e, boolean buyNow) {
|
||||||
|
@ -61,6 +61,12 @@ public class GUIConfirmPurchase extends Gui {
|
|||||||
this.pricePerItem = this.auctionItem.getBasePrice() / this.maxStackSize;
|
this.pricePerItem = this.auctionItem.getBasePrice() / this.maxStackSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setOnClose(close -> {
|
||||||
|
AuctionHouse.getInstance().getTransactionManager().getPrePurchaseHolding().remove(close.player);
|
||||||
|
close.manager.showGUI(close.player, new GUIAuctionHouse(this.auctionPlayer));
|
||||||
|
AuctionHouse.getInstance().getLogger().info("Removed " + close.player.getName() + " from confirmation pre purchase");
|
||||||
|
});
|
||||||
|
|
||||||
draw();
|
draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,7 +75,7 @@ public class GUIConfirmPurchase extends Gui {
|
|||||||
setItem(this.buyingSpecificQuantity ? 1 : 0, 4, AuctionAPI.getInstance().deserializeItem(this.auctionItem.getRawItem()));
|
setItem(this.buyingSpecificQuantity ? 1 : 0, 4, AuctionAPI.getInstance().deserializeItem(this.auctionItem.getRawItem()));
|
||||||
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());
|
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());
|
||||||
|
|
||||||
setActionForRange(this.buyingSpecificQuantity ? 14 : 5, this.buyingSpecificQuantity ? 17 : 8, ClickType.LEFT, e -> e.manager.showGUI(e.player, new GUIAuctionHouse(this.auctionPlayer)));
|
setActionForRange(this.buyingSpecificQuantity ? 14 : 5, this.buyingSpecificQuantity ? 17 : 8, ClickType.LEFT, e -> e.gui.close());
|
||||||
setActionForRange(this.buyingSpecificQuantity ? 9 : 0, this.buyingSpecificQuantity ? 12 : 3, ClickType.LEFT, e -> {
|
setActionForRange(this.buyingSpecificQuantity ? 9 : 0, this.buyingSpecificQuantity ? 12 : 3, ClickType.LEFT, e -> {
|
||||||
// Re-select the item to ensure that it's available
|
// Re-select the item to ensure that it's available
|
||||||
AuctionItem located = AuctionHouse.getInstance().getAuctionItemManager().getItem(this.auctionItem.getKey());
|
AuctionItem located = AuctionHouse.getInstance().getAuctionItemManager().getItem(this.auctionItem.getKey());
|
||||||
@ -79,47 +85,45 @@ public class GUIConfirmPurchase extends Gui {
|
|||||||
if (!AuctionHouse.getInstance().getEconomy().has(e.player, this.buyingSpecificQuantity ? this.purchaseQuantity * this.pricePerItem : located.getBasePrice())) {
|
if (!AuctionHouse.getInstance().getEconomy().has(e.player, this.buyingSpecificQuantity ? this.purchaseQuantity * this.pricePerItem : located.getBasePrice())) {
|
||||||
AuctionHouse.getInstance().getLocale().getMessage("general.notenoughmoney").sendPrefixedMessage(e.player);
|
AuctionHouse.getInstance().getLocale().getMessage("general.notenoughmoney").sendPrefixedMessage(e.player);
|
||||||
SoundManager.getInstance().playSound(e.player, Settings.SOUNDS_NOT_ENOUGH_MONEY.getString(), 1.0F, 1.0F);
|
SoundManager.getInstance().playSound(e.player, Settings.SOUNDS_NOT_ENOUGH_MONEY.getString(), 1.0F, 1.0F);
|
||||||
e.manager.showGUI(e.player, new GUIAuctionHouse(this.auctionPlayer));
|
e.gui.close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bukkit.getServer().getScheduler().runTaskAsynchronously(AuctionHouse.getInstance(), () -> {
|
AuctionEndEvent auctionEndEvent = new AuctionEndEvent(Bukkit.getOfflinePlayer(this.auctionItem.getOwner()), e.player, this.auctionItem, AuctionSaleType.WITHOUT_BIDDING_SYSTEM, false);
|
||||||
AuctionEndEvent auctionEndEvent = new AuctionEndEvent(Bukkit.getOfflinePlayer(this.auctionItem.getOwner()), e.player, this.auctionItem, AuctionSaleType.WITHOUT_BIDDING_SYSTEM);
|
Bukkit.getServer().getPluginManager().callEvent(auctionEndEvent);
|
||||||
Bukkit.getServer().getPluginManager().callEvent(auctionEndEvent);
|
if (auctionEndEvent.isCancelled()) return;
|
||||||
|
|
||||||
if (auctionEndEvent.isCancelled()) return;
|
if (!Settings.ALLOW_PURCHASE_IF_INVENTORY_FULL.getBoolean() && e.player.getInventory().firstEmpty() == -1) {
|
||||||
|
AuctionHouse.getInstance().getLocale().getMessage("general.noroom").sendPrefixedMessage(e.player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!Settings.ALLOW_PURCHASE_IF_INVENTORY_FULL.getBoolean() && e.player.getInventory().firstEmpty() == -1) {
|
if (this.buyingSpecificQuantity) {
|
||||||
AuctionHouse.getInstance().getLocale().getMessage("general.noroom").sendPrefixedMessage(e.player);
|
ItemStack item = AuctionAPI.getInstance().deserializeItem(located.getRawItem());
|
||||||
return;
|
|
||||||
}
|
if (item.getAmount() - this.purchaseQuantity >= 1) {
|
||||||
|
item.setAmount(item.getAmount() - this.purchaseQuantity);
|
||||||
if (this.buyingSpecificQuantity) {
|
located.setRawItem(AuctionAPI.getInstance().serializeItem(item));
|
||||||
ItemStack item = AuctionAPI.getInstance().deserializeItem(located.getRawItem());
|
located.setBasePrice(located.getBasePrice() - this.purchaseQuantity * this.pricePerItem);
|
||||||
// Bukkit.broadcastMessage(String.format("Total Item Qty: %d\nTotal Purchase Qty: %d\nAmount of purchase: %d", item.getAmount(), this.purchaseQuantity, item.getAmount() - this.purchaseQuantity));
|
item.setAmount(this.purchaseQuantity);
|
||||||
|
transferFunds(e.player, this.purchaseQuantity * this.pricePerItem);
|
||||||
if (item.getAmount() - this.purchaseQuantity >= 1) {
|
} else {
|
||||||
item.setAmount(item.getAmount() - this.purchaseQuantity);
|
transferFunds(e.player, located.getBasePrice());
|
||||||
located.setRawItem(AuctionAPI.getInstance().serializeItem(item));
|
AuctionHouse.getInstance().getAuctionItemManager().removeItem(located.getKey());
|
||||||
located.setBasePrice(located.getBasePrice() - this.purchaseQuantity * this.pricePerItem);
|
|
||||||
item.setAmount(this.purchaseQuantity);
|
|
||||||
transferFunds(e.player, this.purchaseQuantity * this.pricePerItem);
|
|
||||||
} else {
|
|
||||||
transferFunds(e.player, located.getBasePrice());
|
|
||||||
AuctionHouse.getInstance().getAuctionItemManager().removeItem(located.getKey());
|
|
||||||
}
|
|
||||||
|
|
||||||
givePlayerItem(e.player, item);
|
|
||||||
sendMessages(e, located, true, this.purchaseQuantity * this.pricePerItem);
|
|
||||||
e.manager.showGUI(e.player, new GUIAuctionHouse(this.auctionPlayer));
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
givePlayerItem(e.player, item);
|
||||||
|
sendMessages(e, located, true, this.purchaseQuantity * this.pricePerItem);
|
||||||
|
|
||||||
|
} else {
|
||||||
transferFunds(e.player, located.getBasePrice());
|
transferFunds(e.player, located.getBasePrice());
|
||||||
AuctionHouse.getInstance().getAuctionItemManager().removeItem(located.getKey());
|
AuctionHouse.getInstance().getAuctionItemManager().removeItem(located.getKey());
|
||||||
givePlayerItem(e.player, AuctionAPI.getInstance().deserializeItem(located.getRawItem()));
|
givePlayerItem(e.player, AuctionAPI.getInstance().deserializeItem(located.getRawItem()));
|
||||||
sendMessages(e, located, false, 0);
|
sendMessages(e, located, false, 0);
|
||||||
e.manager.showGUI(e.player, new GUIAuctionHouse(this.auctionPlayer));
|
}
|
||||||
|
|
||||||
|
AuctionHouse.getInstance().getTransactionManager().getPrePurchasePlayers(auctionItem.getKey()).forEach(player -> {
|
||||||
|
AuctionHouse.getInstance().getTransactionManager().removeAllRelatedPlayers(auctionItem.getKey());
|
||||||
|
player.closeInventory();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -44,43 +44,42 @@ public class GUITransactionList extends Gui {
|
|||||||
|
|
||||||
private void draw() {
|
private void draw() {
|
||||||
reset();
|
reset();
|
||||||
AuctionHouse.newChain().async(() -> {
|
|
||||||
pages = (int) Math.max(1, Math.ceil(this.transactions.size() / (double) 45));
|
|
||||||
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, new TItemBuilder(Objects.requireNonNull(Settings.GUI_REFRESH_BTN_ITEM.getMaterial().parseMaterial())).setName(Settings.GUI_REFRESH_BTN_NAME.getString()).setLore(Settings.GUI_REFRESH_BTN_LORE.getStringList()).toItemStack(), e -> e.manager.showGUI(e.player, new GUITransactionList(this.auctionPlayer)));
|
|
||||||
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();
|
|
||||||
SoundManager.getInstance().playSound(this.auctionPlayer.getPlayer(), Settings.SOUNDS_NAVIGATE_GUI_PAGES.getString(), 1.0F, 1.0F);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Other Buttons
|
pages = (int) Math.max(1, Math.ceil(this.transactions.size() / (double) 45));
|
||||||
setButton(5, 0, 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(this.auctionPlayer)));
|
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, 1, ConfigurationItemHelper.createConfigurationItem(Settings.GUI_TRANSACTIONS_ITEM_TOGGLE_OWN_ITEM.getString(), Settings.GUI_TRANSACTIONS_ITEM_TOGGLE_OWN_NAME.getString(), Settings.GUI_TRANSACTIONS_ITEM_TOGGLE_OWN_LORE.getStringList(), null), e -> {
|
setButton(5, 4, new TItemBuilder(Objects.requireNonNull(Settings.GUI_REFRESH_BTN_ITEM.getMaterial().parseMaterial())).setName(Settings.GUI_REFRESH_BTN_NAME.getString()).setLore(Settings.GUI_REFRESH_BTN_LORE.getStringList()).toItemStack(), e -> e.manager.showGUI(e.player, new GUITransactionList(this.auctionPlayer)));
|
||||||
this.showOwnOnly = !this.showOwnOnly;
|
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());
|
||||||
draw();
|
setOnPage(e -> {
|
||||||
});
|
draw();
|
||||||
|
SoundManager.getInstance().playSound(this.auctionPlayer.getPlayer(), Settings.SOUNDS_NAVIGATE_GUI_PAGES.getString(), 1.0F, 1.0F);
|
||||||
|
});
|
||||||
|
|
||||||
if (this.showOwnOnly) {
|
// Other Buttons
|
||||||
highlightItem(5, 1);
|
setButton(5, 0, 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(this.auctionPlayer)));
|
||||||
} else {
|
setButton(5, 1, ConfigurationItemHelper.createConfigurationItem(Settings.GUI_TRANSACTIONS_ITEM_TOGGLE_OWN_ITEM.getString(), Settings.GUI_TRANSACTIONS_ITEM_TOGGLE_OWN_NAME.getString(), Settings.GUI_TRANSACTIONS_ITEM_TOGGLE_OWN_LORE.getStringList(), null), e -> {
|
||||||
removeHighlight(5, 1);
|
this.showOwnOnly = !this.showOwnOnly;
|
||||||
}
|
draw();
|
||||||
|
});
|
||||||
|
|
||||||
int slot = 0;
|
if (this.showOwnOnly) {
|
||||||
List<Transaction> data = this.transactions.stream().sorted(Comparator.comparingLong(Transaction::getTransactionTime).reversed()).skip((page - 1) * 45L).limit(45).collect(Collectors.toList());
|
highlightItem(5, 1);
|
||||||
if (this.showOwnOnly)
|
} else {
|
||||||
data = data.stream().filter(transaction -> transaction.getSeller().equals(this.auctionPlayer.getPlayer().getUniqueId()) || transaction.getBuyer().equals(this.auctionPlayer.getPlayer().getUniqueId())).collect(Collectors.toList());
|
removeHighlight(5, 1);
|
||||||
|
}
|
||||||
|
|
||||||
for (Transaction transaction : data) {
|
int slot = 0;
|
||||||
setButton(slot++, ConfigurationItemHelper.createConfigurationItem(Settings.GUI_TRANSACTIONS_ITEM_TRANSACTION_ITEM.getString(), Settings.GUI_TRANSACTIONS_ITEM_TRANSACTION_NAME.getString(), Settings.GUI_TRANSACTIONS_ITEM_TRANSACTION_LORE.getStringList(), new HashMap<String, Object>() {{
|
List<Transaction> data = this.transactions.stream().sorted(Comparator.comparingLong(Transaction::getTransactionTime).reversed()).skip((page - 1) * 45L).limit(45).collect(Collectors.toList());
|
||||||
put("%transaction_id%", transaction.getId().toString());
|
if (this.showOwnOnly)
|
||||||
put("%seller%", Bukkit.getOfflinePlayer(transaction.getSeller()).getName());
|
data = data.stream().filter(transaction -> transaction.getSeller().equals(this.auctionPlayer.getPlayer().getUniqueId()) || transaction.getBuyer().equals(this.auctionPlayer.getPlayer().getUniqueId())).collect(Collectors.toList());
|
||||||
put("%buyer%", Bukkit.getOfflinePlayer(transaction.getBuyer()).getName());
|
|
||||||
put("%date%", AuctionAPI.getInstance().convertMillisToDate(transaction.getTransactionTime()));
|
for (Transaction transaction : data) {
|
||||||
put("%item_name%", AuctionAPI.getInstance().getItemName(AuctionAPI.getInstance().deserializeItem(transaction.getAuctionItem().getRawItem())));
|
setButton(slot++, ConfigurationItemHelper.createConfigurationItem(Settings.GUI_TRANSACTIONS_ITEM_TRANSACTION_ITEM.getString(), Settings.GUI_TRANSACTIONS_ITEM_TRANSACTION_NAME.getString(), Settings.GUI_TRANSACTIONS_ITEM_TRANSACTION_LORE.getStringList(), new HashMap<String, Object>() {{
|
||||||
}}), e -> e.manager.showGUI(e.player, new GUITransactionView(this.auctionPlayer, transaction)));
|
put("%transaction_id%", transaction.getId().toString());
|
||||||
}
|
put("%seller%", Bukkit.getOfflinePlayer(transaction.getSeller()).getName());
|
||||||
}).execute();
|
put("%buyer%", Bukkit.getOfflinePlayer(transaction.getBuyer()).getName());
|
||||||
|
put("%date%", AuctionAPI.getInstance().convertMillisToDate(transaction.getTransactionTime()));
|
||||||
|
put("%item_name%", AuctionAPI.getInstance().getItemName(AuctionAPI.getInstance().deserializeItem(transaction.getAuctionItem().getRawItem())));
|
||||||
|
}}), e -> e.manager.showGUI(e.player, new GUITransactionView(this.auctionPlayer, transaction)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package ca.tweetzy.auctionhouse.helpers;
|
package ca.tweetzy.auctionhouse.helpers;
|
||||||
|
|
||||||
|
import ca.tweetzy.auctionhouse.AuctionHouse;
|
||||||
import ca.tweetzy.core.compatibility.ServerVersion;
|
import ca.tweetzy.core.compatibility.ServerVersion;
|
||||||
|
import ca.tweetzy.core.utils.TextUtils;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ import java.util.stream.Collectors;
|
|||||||
* Usage of any code found within this class is prohibited unless given explicit permission otherwise
|
* Usage of any code found within this class is prohibited unless given explicit permission otherwise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
public class AuctionItemManager {
|
public class AuctionItemManager {
|
||||||
|
|
||||||
private final ArrayList<AuctionItem> auctionItems = new ArrayList<>();
|
private final ArrayList<AuctionItem> auctionItems = new ArrayList<>();
|
||||||
@ -40,7 +39,7 @@ public class AuctionItemManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<AuctionItem> getAuctionItems() {
|
public List<AuctionItem> getAuctionItems() {
|
||||||
return Collections.unmodifiableList(auctionItems);
|
return this.auctionItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<AuctionItem> getFilteredItems(AuctionItemCategory category) {
|
public List<AuctionItem> getFilteredItems(AuctionItemCategory category) {
|
||||||
|
@ -6,11 +6,9 @@ import ca.tweetzy.auctionhouse.settings.Settings;
|
|||||||
import ca.tweetzy.auctionhouse.transaction.Transaction;
|
import ca.tweetzy.auctionhouse.transaction.Transaction;
|
||||||
import ca.tweetzy.core.utils.TextUtils;
|
import ca.tweetzy.core.utils.TextUtils;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -22,6 +20,7 @@ import java.util.stream.Collectors;
|
|||||||
public class TransactionManager {
|
public class TransactionManager {
|
||||||
|
|
||||||
private final ArrayList<Transaction> transactions = new ArrayList<>();
|
private final ArrayList<Transaction> transactions = new ArrayList<>();
|
||||||
|
private final HashMap<Player, UUID> prePurchaseHolding = new HashMap<>();
|
||||||
|
|
||||||
public void addTransaction(Transaction transaction) {
|
public void addTransaction(Transaction transaction) {
|
||||||
if (transaction == null) return;
|
if (transaction == null) return;
|
||||||
@ -40,6 +39,22 @@ public class TransactionManager {
|
|||||||
return Collections.unmodifiableList(this.transactions);
|
return Collections.unmodifiableList(this.transactions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addPrePurchase(Player player, UUID uuid) {
|
||||||
|
this.prePurchaseHolding.put(player, uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeAllRelatedPlayers(UUID uuid) {
|
||||||
|
this.prePurchaseHolding.keySet().removeIf(p -> this.prePurchaseHolding.get(p).equals(uuid));
|
||||||
|
}
|
||||||
|
|
||||||
|
public HashMap<Player, UUID> getPrePurchaseHolding() {
|
||||||
|
return prePurchaseHolding;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Player> getPrePurchasePlayers(UUID uuid) {
|
||||||
|
return this.prePurchaseHolding.keySet().stream().filter(p -> this.prePurchaseHolding.get(p).equals(uuid)).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
public void loadTransactions(boolean useDatabase) {
|
public void loadTransactions(boolean useDatabase) {
|
||||||
if (useDatabase) {
|
if (useDatabase) {
|
||||||
AuctionHouse.getInstance().getDataManager().getTransactions(all -> all.forEach(this::addTransaction));
|
AuctionHouse.getInstance().getDataManager().getTransactions(all -> all.forEach(this::addTransaction));
|
||||||
|
Loading…
Reference in New Issue
Block a user