individual transaction viewer

This commit is contained in:
Kiran Hart 2021-03-23 00:17:03 -04:00
parent e24b871804
commit 7e1d0af147
4 changed files with 73 additions and 6 deletions

View File

@ -3,8 +3,10 @@ package ca.tweetzy.auctionhouse.api;
import ca.tweetzy.auctionhouse.auction.AuctionItem;
import ca.tweetzy.auctionhouse.auction.AuctionSaleType;
import ca.tweetzy.auctionhouse.settings.Settings;
import ca.tweetzy.core.compatibility.XMaterial;
import org.bukkit.OfflinePlayer;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.util.io.BukkitObjectInputStream;
import org.bukkit.util.io.BukkitObjectOutputStream;
@ -159,6 +161,20 @@ public class AuctionAPI {
return null;
}
/**
* Used to create a player head
*
* @param name is the name of the player
* @return the player skull
*/
public ItemStack getPlayerHead(String name) {
ItemStack stack = XMaterial.PLAYER_HEAD.parseItem();
SkullMeta meta = (SkullMeta) stack.getItemMeta();
meta.setOwner(name);
stack.setItemMeta(meta);
return stack;
}
/**
* Used to send a discord message to a webhook link
*

View File

@ -1,8 +1,18 @@
package ca.tweetzy.auctionhouse.guis.transaction;
import ca.tweetzy.auctionhouse.api.AuctionAPI;
import ca.tweetzy.auctionhouse.auction.AuctionItem;
import ca.tweetzy.auctionhouse.auction.AuctionPlayer;
import ca.tweetzy.auctionhouse.auction.AuctionSaleType;
import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper;
import ca.tweetzy.auctionhouse.settings.Settings;
import ca.tweetzy.auctionhouse.transaction.Transaction;
import ca.tweetzy.core.gui.Gui;
import ca.tweetzy.core.gui.GuiUtils;
import ca.tweetzy.core.utils.TextUtils;
import org.bukkit.Bukkit;
import java.util.HashMap;
/**
* The current file has been created by Kiran Hart
@ -12,11 +22,22 @@ import ca.tweetzy.core.gui.Gui;
*/
public class GUITransactionView extends Gui {
final AuctionPlayer auctionPlayer;
final Transaction transaction;
public GUITransactionView(AuctionPlayer auctionPlayer, Transaction transaction) {
this.auctionPlayer = auctionPlayer;
this.transaction = transaction;
setTitle(TextUtils.formatText(Settings.GUI_TRANSACTION_VIEW_TITLE.getString()));
setRows(6);
setAcceptsItems(false);
setDefaultItem(Settings.GUI_TRANSACTION_VIEW_BACKGROUND_ITEM.getMaterial().parseItem());
setUseLockedCells(Settings.GUI_TRANSACTION_VIEW_BACKGROUND_FILL.getBoolean());
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 GUITransactionList(auctionPlayer)));
setItem(1, 4, AuctionAPI.getInstance().deserializeItem(transaction.getAuctionItem().getRawItem()));
setItem(3, 2, GuiUtils.createButtonItem(AuctionAPI.getInstance().getPlayerHead(Bukkit.getOfflinePlayer(transaction.getSeller()).getName()), Settings.GUI_TRANSACTION_VIEW_ITEM_SELLER_NAME.getString(), Settings.GUI_TRANSACTION_VIEW_ITEM_SELLER_LORE.getStringList()));
setItem(3, 6, GuiUtils.createButtonItem(AuctionAPI.getInstance().getPlayerHead(Bukkit.getOfflinePlayer(transaction.getBuyer()).getName()), Settings.GUI_TRANSACTION_VIEW_ITEM_BUYER_NAME.getString(), Settings.GUI_TRANSACTION_VIEW_ITEM_BUYER_LORE.getStringList()));
setItem(3,4, ConfigurationItemHelper.createConfigurationItem(Settings.GUI_TRANSACTION_VIEW_ITEM_INFO_ITEM.getString(), Settings.GUI_TRANSACTION_VIEW_ITEM_INFO_NAME.getString(), Settings.GUI_TRANSACTION_VIEW_ITEM_INFO_LORE.getStringList(), new HashMap<String, Object>(){{
put("%transaction_id%", transaction.getId().toString());
put("%sale_type%", transaction.getAuctionSaleType() == AuctionSaleType.USED_BIDDING_SYSTEM ? "Won Auction" : "Bought Immediately");
put("%transaction_date%", AuctionAPI.getInstance().convertMillisToDate(transaction.getTransactionTime()));
put("%final_price%", String.format("%,.2f", transaction.getFinalPrice()));
}}));
}
}

View File

@ -1,6 +1,7 @@
package ca.tweetzy.auctionhouse.settings;
import ca.tweetzy.auctionhouse.AuctionHouse;
import ca.tweetzy.core.compatibility.XMaterial;
import ca.tweetzy.core.compatibility.XSound;
import ca.tweetzy.core.configuration.Config;
import ca.tweetzy.core.configuration.ConfigSetting;
@ -229,7 +230,7 @@ public class Settings {
/* ===============================
* TRANSACTIONS LIST GUI
* ===============================*/
public static final ConfigSetting GUI_TRANSACTIONS_TITLE = new ConfigSetting(config, "gui.transactions.title", "&7Transaction History");
public static final ConfigSetting GUI_TRANSACTIONS_TITLE = new ConfigSetting(config, "gui.transactions.title", "&7&LTransaction History");
public static final ConfigSetting GUI_TRANSACTIONS_ITEM_TOGGLE_OWN_ITEM = new ConfigSetting(config, "gui.transactions.items.toggle own.item", "NETHER_STAR");
public static final ConfigSetting GUI_TRANSACTIONS_ITEM_TOGGLE_OWN_NAME = new ConfigSetting(config, "gui.transactions.items.toggle own.name", "&e&LToggle Your Transactions");
@ -249,6 +250,33 @@ public class Settings {
"&7Click to view more details"
));
/* ===============================
* TRANSACTIONS VIEW GUI
* ===============================*/
public static final ConfigSetting GUI_TRANSACTION_VIEW_TITLE = new ConfigSetting(config, "gui.transaction view.title", "&7&LViewing Transaction");
public static final ConfigSetting GUI_TRANSACTION_VIEW_BACKGROUND_FILL = new ConfigSetting(config, "gui.transaction view.background.fill", true);
public static final ConfigSetting GUI_TRANSACTION_VIEW_BACKGROUND_ITEM = new ConfigSetting(config, "gui.transaction view.background.item", "BLACK_STAINED_GLASS_PANE");
public static final ConfigSetting GUI_TRANSACTION_VIEW_ITEM_SELLER_NAME = new ConfigSetting(config, "gui.transaction view.items.seller.name", "&e%seller_name%");
public static final ConfigSetting GUI_TRANSACTION_VIEW_ITEM_SELLER_LORE = new ConfigSetting(config, "gui.transaction view.items.seller.lore", Arrays.asList(
"&7This is the player who sold the item.",
"&7ID&F: &e%seller_id%"
));
public static final ConfigSetting GUI_TRANSACTION_VIEW_ITEM_BUYER_NAME = new ConfigSetting(config, "gui.transaction view.items.buyer.name", "&e%buyer_name%");
public static final ConfigSetting GUI_TRANSACTION_VIEW_ITEM_BUYER_LORE = new ConfigSetting(config, "gui.transaction view.items.buyer.lore", Arrays.asList(
"&7This is the player who bought the item.",
"&7ID&F: &e%buyer_id%"
));
public static final ConfigSetting GUI_TRANSACTION_VIEW_ITEM_INFO_ITEM = new ConfigSetting(config, "gui.transaction view.items.information.item", "PAPER");
public static final ConfigSetting GUI_TRANSACTION_VIEW_ITEM_INFO_NAME = new ConfigSetting(config, "gui.transaction view.items.information.name", "&e%seller_name%");
public static final ConfigSetting GUI_TRANSACTION_VIEW_ITEM_INFO_LORE = new ConfigSetting(config, "gui.transaction view.items.information.lore", Arrays.asList(
"&7ID&f: &e%transaction_id%",
"&7Sale Type&f: &e%sale_type%",
"&7Date&f: &e%transaction_date%",
"&7Final Price&f: &e%final_price%"
));
/* ===============================
* AUCTION STACKS

View File

@ -25,6 +25,7 @@ public class Transaction implements Serializable {
private final long transactionTime;
private final AuctionItem auctionItem;
private final AuctionSaleType auctionSaleType;
private final double finalPrice;
public Transaction(UUID id, UUID seller, UUID buyer, long transactionTime, AuctionItem auctionItem, AuctionSaleType auctionSaleType) {
this.id = id;
@ -33,5 +34,6 @@ public class Transaction implements Serializable {
this.transactionTime = transactionTime;
this.auctionItem = auctionItem;
this.auctionSaleType = auctionSaleType;
this.finalPrice = auctionSaleType == AuctionSaleType.USED_BIDDING_SYSTEM ? auctionItem.getCurrentPrice() : auctionItem.getBasePrice();
}
}