diff --git a/src/main/java/com/shadebyte/auctionhouse/api/AuctionAPI.java b/src/main/java/com/shadebyte/auctionhouse/api/AuctionAPI.java index bdacfa2..114df92 100644 --- a/src/main/java/com/shadebyte/auctionhouse/api/AuctionAPI.java +++ b/src/main/java/com/shadebyte/auctionhouse/api/AuctionAPI.java @@ -123,6 +123,7 @@ public class AuctionAPI { Core.getInstance().getConfig().getStringList(node + ".lore").forEach(s -> lore.add(ChatColor.translateAlternateColorCodes('&', s))); meta.setLore(lore); stack.setItemMeta(meta); + stack = (usr == 0) ? NBTEditor.setItemTag(stack, seller, "AuctionSellerHead") : NBTEditor.setItemTag(stack, buyer, "AuctionBuyerHead"); return stack; } diff --git a/src/main/java/com/shadebyte/auctionhouse/auction/Transaction.java b/src/main/java/com/shadebyte/auctionhouse/auction/Transaction.java index 9b92487..cbc19e1 100644 --- a/src/main/java/com/shadebyte/auctionhouse/auction/Transaction.java +++ b/src/main/java/com/shadebyte/auctionhouse/auction/Transaction.java @@ -86,7 +86,7 @@ public class Transaction { ItemMeta meta = item.getItemMeta(); meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', Core.getInstance().getConfig().getString("transaction.name").replace("{transaction_id}", Core.getInstance().getTransactions().getConfig().getString("transactions." + node + ".auction-id")))); List lore = new ArrayList<>(); - Core.getInstance().getConfig().getStringList("transaction.lore").forEach(e-> lore.add(ChatColor.translateAlternateColorCodes('&', e.replace("{buyer}", Bukkit.getOfflinePlayer(UUID.fromString(Core.getInstance().getTransactions().getConfig().getString("transactions." + node + ".buyer"))).getName()).replace("{seller}", Bukkit.getOfflinePlayer(UUID.fromString(Core.getInstance().getTransactions().getConfig().getString("transactions." + node + ".seller"))).getName())))); + Core.getInstance().getConfig().getStringList("transaction.lore").forEach(e -> lore.add(ChatColor.translateAlternateColorCodes('&', e.replace("{buyer}", Bukkit.getOfflinePlayer(UUID.fromString(Core.getInstance().getTransactions().getConfig().getString("transactions." + node + ".buyer"))).getName()).replace("{seller}", Bukkit.getOfflinePlayer(UUID.fromString(Core.getInstance().getTransactions().getConfig().getString("transactions." + node + ".seller"))).getName())))); meta.setLore(lore); item.setItemMeta(meta); item = NBTEditor.setItemTag(item, node, "AuctionTransactionID"); @@ -100,6 +100,18 @@ public class Transaction { return items; } + public static List getAllRecordedTransactionsByPlayer(Player p) { + List items = new ArrayList<>(); + if (getTotalTransactions() == 0) return items; + if (getTotalTransactionsByPlayer(p) == 0) return items; + for (String node : Core.getInstance().getTransactions().getConfig().getConfigurationSection("transactions").getKeys(false)) { + if (Core.getInstance().getTransactions().getConfig().getString("transactions." + node + ".seller").equalsIgnoreCase(p.getUniqueId().toString()) || Core.getInstance().getTransactions().getConfig().getString("transactions." + node + ".buyer").equalsIgnoreCase(p.getUniqueId().toString())) { + items.add(getTransactionItem(node)); + } + } + return items; + } + public TransactionType getTransactionType() { return transactionType; } diff --git a/src/main/java/com/shadebyte/auctionhouse/events/PlayerListener.java b/src/main/java/com/shadebyte/auctionhouse/events/PlayerListener.java index 6f3e1c8..1d2396f 100644 --- a/src/main/java/com/shadebyte/auctionhouse/events/PlayerListener.java +++ b/src/main/java/com/shadebyte/auctionhouse/events/PlayerListener.java @@ -25,7 +25,7 @@ public class PlayerListener implements Listener { public void onReceiptRightClick(PlayerInteractEvent e) { Player p = e.getPlayer(); - if (e.getAction() != Action.RIGHT_CLICK_AIR || e.getAction() != Action.RIGHT_CLICK_BLOCK) { + if (e.getAction() != Action.RIGHT_CLICK_AIR) { return; } diff --git a/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/AllTransactionsGUI.java b/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/AllTransactionsGUI.java index 43924eb..5c12ff4 100644 --- a/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/AllTransactionsGUI.java +++ b/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/AllTransactionsGUI.java @@ -65,7 +65,7 @@ public class AllTransactionsGUI implements AGUI { @Override public Inventory getInventory() { - Inventory inventory = Bukkit.createInventory(this, 54, ChatColor.translateAlternateColorCodes('&', Core.getInstance().getConfig().getString("gui.collection.title"))); + Inventory inventory = Bukkit.createInventory(this, 54, ChatColor.translateAlternateColorCodes('&', Core.getInstance().getConfig().getString("gui.alltransactions.title"))); //Bottom Row inventory.setItem(48, AuctionAPI.getInstance().createConfigItem("gui.alltransactions.items.previouspage", 0, 0)); diff --git a/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/PlayerTransactionsGUI.java b/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/PlayerTransactionsGUI.java new file mode 100644 index 0000000..4310ace --- /dev/null +++ b/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/PlayerTransactionsGUI.java @@ -0,0 +1,98 @@ +package com.shadebyte.auctionhouse.inventory.inventories; + +import com.google.common.collect.Lists; +import com.shadebyte.auctionhouse.Core; +import com.shadebyte.auctionhouse.api.AuctionAPI; +import com.shadebyte.auctionhouse.auction.Transaction; +import com.shadebyte.auctionhouse.inventory.AGUI; +import com.shadebyte.auctionhouse.util.NBTEditor; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import java.util.List; + +/** + * The current file has been created by Kiran Hart + * Date Created: 7/6/2018 + * Time Created: 11:56 AM + * Usage of any code found within this class is prohibited unless given explicit permission otherwise. + */ +public class PlayerTransactionsGUI implements AGUI { + + private Player p; + private List> chunks; + private int page = 1; + + public PlayerTransactionsGUI(Player p) { + this.p = p; + chunks = Lists.partition(Transaction.getAllRecordedTransactionsByPlayer(p), 45); + } + + @Override + public void click(InventoryClickEvent e, ItemStack clicked, int slot) { + e.setCancelled(true); + + try { + if (page >= 1 && slot == 48) p.openInventory(this.setPage(this.getPage() - 1).getInventory()); + if (page >= 1 && slot == 50) p.openInventory(this.setPage(this.getPage() + 1).getInventory()); + } catch (Exception e1) { + } + + if (slot == 49) p.closeInventory(); + + if (slot >= 0 & slot <= 44) { + if (clicked == null || clicked.getType() == Material.AIR) { + return; + } + + if (e.getClick() == ClickType.LEFT) { + String key = (String) NBTEditor.getItemTag(clicked, "AuctionTransactionID"); + p.closeInventory(); + p.openInventory(new SingleTransactionGUI(key).getInventory()); + } + } + } + + @Override + public void close(InventoryCloseEvent e) { + + } + + @Override + public Inventory getInventory() { + Inventory inventory = Bukkit.createInventory(this, 54, ChatColor.translateAlternateColorCodes('&', Core.getInstance().getConfig().getString("gui.playertransactions.title").replace("{player}", p.getName()))); + + //Bottom Row + inventory.setItem(48, AuctionAPI.getInstance().createConfigItem("gui.playertransactions.items.previouspage", 0, 0)); + inventory.setItem(49, AuctionAPI.getInstance().createConfigItem("gui.playertransactions.items.close", 0, 0)); + inventory.setItem(50, AuctionAPI.getInstance().createConfigItem("gui.playertransactions.items.nextpage", 0, 0)); + + if (Transaction.getTotalTransactions() == 0) { + return inventory; + } + + if (chunks.size() != 0) + chunks.get(getPage() - 1).forEach(item -> inventory.setItem(inventory.firstEmpty(), item)); + + return inventory; + } + + public PlayerTransactionsGUI setPage(int page) { + if (page <= 0) + this.page = 1; + else + this.page = page; + return this; + } + + public int getPage() { + return page; + } +} diff --git a/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/SingleTransactionGUI.java b/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/SingleTransactionGUI.java index 11044ab..e805a6f 100644 --- a/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/SingleTransactionGUI.java +++ b/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/SingleTransactionGUI.java @@ -2,15 +2,18 @@ package com.shadebyte.auctionhouse.inventory.inventories; import com.shadebyte.auctionhouse.Core; import com.shadebyte.auctionhouse.api.AuctionAPI; -import com.shadebyte.auctionhouse.auction.Transaction; import com.shadebyte.auctionhouse.inventory.AGUI; +import com.shadebyte.auctionhouse.util.NBTEditor; import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import java.util.UUID; + /** * The current file has been created by Kiran Hart * Date Created: 8/7/2018 @@ -28,6 +31,21 @@ public class SingleTransactionGUI implements AGUI { @Override public void click(InventoryClickEvent e, ItemStack clicked, int slot) { e.setCancelled(true); + Player p = (Player) e.getWhoClicked(); + + if (slot == 39) ; + if (slot == 40) p.openInventory(new PlayerTransactionsGUI(p).getInventory()); + if (slot == 41) p.openInventory(new AuctionGUI(p).getInventory()); + + if (slot == 30 && NBTEditor.getItemTag(clicked, "AuctionSellerHead") != null) { + String id = (String) NBTEditor.getItemTag(e.getCurrentItem(), "AuctionSellerHead"); + p.openInventory(new PlayerTransactionsGUI(Bukkit.getOfflinePlayer(UUID.fromString(id)).getPlayer()).getInventory()); + } + + if (slot == 32 && NBTEditor.getItemTag(clicked, "AuctionBuyerHead") != null) { + String id = (String) NBTEditor.getItemTag(e.getCurrentItem(), "AuctionBuyerHead"); + p.openInventory(new PlayerTransactionsGUI(Bukkit.getOfflinePlayer(UUID.fromString(id)).getPlayer()).getInventory()); + } } @Override @@ -39,7 +57,8 @@ public class SingleTransactionGUI implements AGUI { public Inventory getInventory() { Inventory inventory = Bukkit.createInventory(this, 54, ChatColor.translateAlternateColorCodes('&', Core.getInstance().getConfig().getString("gui.singletransaction.title"))); //Fill Inventory - for (int i = 0; i < inventory.getSize(); i++) inventory.setItem(i, AuctionAPI.getInstance().createConfigItem("gui.singletransaction.items.background", 0, 0)); + for (int i = 0; i < inventory.getSize(); i++) + inventory.setItem(i, AuctionAPI.getInstance().createConfigItem("gui.singletransaction.items.background", 0, 0)); inventory.setItem(13, Core.getInstance().getTransactions().getConfig().getItemStack("transactions." + transactionNode + ".item")); inventory.setItem(39, AuctionAPI.getInstance().createConfigItem("gui.singletransaction.items.back", 0, 0)); @@ -50,9 +69,9 @@ public class SingleTransactionGUI implements AGUI { inventory.setItem(31, Core.getInstance().getTransactions().getConfig().getItemStack("transactions." + transactionNode + ".receipt")); inventory.setItem(32, AuctionAPI.getInstance().createUserHead("gui.singletransaction.items.buyer", "", Core.getInstance().getTransactions().getConfig().getString("transactions." + transactionNode + ".buyer"), 1)); - inventory.setItem(48, AuctionAPI.getInstance().createTransactionConfigItem("gui.singletransaction.items.startprice", "", "", Core.getInstance().getTransactions().getConfig().getInt("transactions." + transactionNode + ".start-price"),0,0)); - inventory.setItem(49, AuctionAPI.getInstance().createTransactionConfigItem("gui.singletransaction.items.increment", "", "", 0,Core.getInstance().getTransactions().getConfig().getInt("transactions." + transactionNode + ".bid-increment"),0)); - inventory.setItem(50, AuctionAPI.getInstance().createTransactionConfigItem("gui.singletransaction.items.buynowprice", "", "", 0,0,Core.getInstance().getTransactions().getConfig().getInt("transactions." + transactionNode + ".buy-now-price"))); + inventory.setItem(48, AuctionAPI.getInstance().createTransactionConfigItem("gui.singletransaction.items.startprice", "", "", Core.getInstance().getTransactions().getConfig().getInt("transactions." + transactionNode + ".start-price"), 0, 0)); + inventory.setItem(49, AuctionAPI.getInstance().createTransactionConfigItem("gui.singletransaction.items.increment", "", "", 0, Core.getInstance().getTransactions().getConfig().getInt("transactions." + transactionNode + ".bid-increment"), 0)); + inventory.setItem(50, AuctionAPI.getInstance().createTransactionConfigItem("gui.singletransaction.items.buynowprice", "", "", 0, 0, Core.getInstance().getTransactions().getConfig().getInt("transactions." + transactionNode + ".buy-now-price"))); return inventory; } diff --git a/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/TransactionSelectGUI.java b/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/TransactionSelectGUI.java new file mode 100644 index 0000000..87bf3aa --- /dev/null +++ b/src/main/java/com/shadebyte/auctionhouse/inventory/inventories/TransactionSelectGUI.java @@ -0,0 +1,31 @@ +package com.shadebyte.auctionhouse.inventory.inventories; + +import com.shadebyte.auctionhouse.inventory.AGUI; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +/** + * The current file has been created by Kiran Hart + * Date Created: 8/14/2018 + * Time Created: 11:37 AM + * Usage of any code found within this class is prohibited unless given explicit permission otherwise. + */ +public class TransactionSelectGUI implements AGUI { + + @Override + public void click(InventoryClickEvent e, ItemStack clicked, int slot) { + + } + + @Override + public void close(InventoryCloseEvent e) { + + } + + @Override + public Inventory getInventory() { + return null; + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index a119f3c..c960844 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -55,6 +55,21 @@ transaction: - "&7Buyer&f: &b{buyer}" gui: + transaction: + title: "&E&lSelect an Option" + items: + alltransactions: + item: "BOOK:0" + name: "&e&lAll Transactions" + lore: + - "&7View all the recorded" + - "&7transactions by everyone." + playertransactions: + item: "NETHER_STAR:0" + name: "&e&lYour Transactions" + lore: + - "&7View all the recorded" + - "&7transactions you've made." alltransactions: title: "&E&lAll Transactions" items: @@ -74,6 +89,8 @@ gui: lore: - "&7Next Page" playertransactions: + title: "&E&l{player} Transactions" + items: previouspage: item: "PAPER:0" name: "&e&l<- Previous Page"