diff --git a/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/other/BidMenu.java b/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/other/BidMenu.java index d13ac63..f3dac53 100644 --- a/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/other/BidMenu.java +++ b/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/other/BidMenu.java @@ -1,6 +1,5 @@ package com.badbones69.crazyauctions.api.guis.types.other; -import com.badbones69.crazyauctions.Methods; import com.badbones69.crazyauctions.api.builders.ItemBuilder; import com.badbones69.crazyauctions.api.enums.Messages; import com.badbones69.crazyauctions.api.enums.ShopType; @@ -120,8 +119,6 @@ public class BidMenu extends Holder { final Player player = bidMenu.player; - final ItemStack item = bidMenu.auction.getActiveItem(ShopType.BID).getItemStack(); - final AuctionItem auction = bidMenu.auction; switch (type) { diff --git a/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/other/BuyingMenu.java b/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/other/BuyingMenu.java index 15b223d..9362eff 100644 --- a/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/other/BuyingMenu.java +++ b/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/other/BuyingMenu.java @@ -11,6 +11,7 @@ import com.badbones69.crazyauctions.api.guis.Holder; import com.badbones69.crazyauctions.api.guis.HolderManager; import com.badbones69.crazyauctions.api.GuiManager; import com.badbones69.crazyauctions.currency.VaultSupport; +import com.badbones69.crazyauctions.tasks.objects.AuctionItem; import io.papermc.paper.persistence.PersistentDataContainerView; import org.bukkit.Sound; import org.bukkit.configuration.file.FileConfiguration; @@ -23,18 +24,22 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.UUID; public class BuyingMenu extends Holder { private FileConfiguration config; private FileConfiguration data; + private AuctionItem auction; private List options; private String id; - public BuyingMenu(final Player player, final String id, final String title) { + public BuyingMenu(final AuctionItem auction, final Player player, final String id, final String title) { super(player, title, 9); + this.auction = auction; + this.config = Files.config.getConfiguration(); this.data = Files.data.getConfiguration(); @@ -47,11 +52,15 @@ public class BuyingMenu extends Holder { @Override public final Holder build() { - if (!this.data.contains("Items." + this.id)) { - GuiManager.openShop(this.player, ShopType.SELL, HolderManager.getShopCategory(this.player), 1); + final UUID uuid = this.player.getUniqueId(); + + if (!this.data.contains("active_auctions." + uuid + "." + this.id)) { + GuiManager.openShop(this.player, ShopType.BID, HolderManager.getShopCategory(this.player), 1); this.player.sendMessage(Messages.ITEM_DOESNT_EXIST.getMessage(this.player)); + this.userManager.removeAuctionItem(this.auction); // remove auction item, as it's not in the active_auctions + return this; } @@ -99,37 +108,7 @@ public class BuyingMenu extends Holder { } } - ItemBuilder itemBuilder = ItemBuilder.convertItemStack(this.data.getString("Items." + this.id + ".Item")); - - if (itemBuilder == null) { - this.plugin.getLogger().warning("The item with store id " + this.data.getString("Items." + this.id + ".StoreID", "buying_menu") + " obtained from your data.yml could not be converted!"); - - return this; - } - - List lore = new ArrayList<>(itemBuilder.getUpdatedLore()); - - lore.add(" "); - - String price = Methods.getPrice(this.id, false); - String time = Methods.convertToTime(this.data.getLong("Items." + this.id + ".Time-Till-Expire")); - - String id = this.data.getString("Items." + this.id + ".Name", "None"); - - for (String l : this.config.getStringList("Settings.GUISettings.SellingItemLore")) { - lore.add(l.replace("%Price%", price).replace("%price%", price) - .replace("%Seller%", id) - .replace("%seller%", id) - .replace("%Time%", time) - .replace("%time%", time)); - } - - itemBuilder.setLore(lore); - - itemBuilder.addInteger(this.data.getInt("Items." + this.id + ".StoreID"), Keys.auction_store_id.getNamespacedKey()); - itemBuilder.addString(this.id, Keys.auction_number.getNamespacedKey()); - - this.inventory.setItem(4, itemBuilder.build()); + this.inventory.setItem(4, this.auction.getActiveItem(ShopType.SELL).build()); this.player.openInventory(this.inventory); @@ -138,13 +117,13 @@ public class BuyingMenu extends Holder { @Override public void run(InventoryClickEvent event) { - if (!(event.getInventory().getHolder(false) instanceof BuyingMenu menu)) return; + if (!(event.getInventory().getHolder(false) instanceof BuyingMenu buyingMenu)) return; event.setCancelled(true); final int slot = event.getSlot(); - final Inventory inventory = menu.getInventory(); + final Inventory inventory = buyingMenu.getInventory(); if (slot > inventory.getSize()) return; @@ -162,25 +141,30 @@ public class BuyingMenu extends Holder { if (type.isEmpty()) return; - final FileConfiguration data = Files.data.getConfiguration(); - final Player player = (Player) event.getWhoClicked(); + final FileConfiguration data = buyingMenu.data; + final Player player = buyingMenu.player; + final UUID uuid = player.getUniqueId(); + + final AuctionItem auction = buyingMenu.auction; switch (type) { case "Confirm" -> { - String id = menu.id; + final String id = buyingMenu.id; - if (!data.contains("Items." + id)) { - menu.click(player); + if (!this.data.contains("active_auctions." + uuid + "." + id)) { + buyingMenu.click(player); GuiManager.openShop(player, HolderManager.getShopType(player), HolderManager.getShopCategory(player), 1); player.sendMessage(Messages.ITEM_DOESNT_EXIST.getMessage(player)); + this.userManager.removeAuctionItem(this.auction); // remove auction item, as it's not in the active_auctions + return; } if (Methods.isInvFull(player)) { - menu.click(player); + buyingMenu.click(player); player.closeInventory(); player.sendMessage(Messages.INVENTORY_FULL.getMessage(player)); @@ -188,16 +172,18 @@ public class BuyingMenu extends Holder { return; } - long cost = data.getLong("Items." + id + ".Price"); - String seller = data.getString("Items." + id + ".Seller"); + final long cost = auction.getPrice(); + final String seller = auction.getName(); final VaultSupport support = this.plugin.getSupport(); if (support.getMoney(player) < cost) { - menu.click(player); + buyingMenu.click(player); + player.closeInventory(); Map placeholders = new HashMap<>(); + placeholders.put("%Money_Needed%", (cost - support.getMoney(player)) + ""); placeholders.put("%money_needed%", (cost - support.getMoney(player)) + ""); @@ -206,15 +192,15 @@ public class BuyingMenu extends Holder { return; } - ItemStack i = Methods.fromBase64(data.getString("Items." + id + ".Item")); + final ItemStack item = auction.asItemStack(); - this.server.getPluginManager().callEvent(new AuctionBuyEvent(player, i, cost)); + this.server.getPluginManager().callEvent(new AuctionBuyEvent(player, item, cost)); support.removeMoney(player, cost); support.addMoney(Methods.getOfflinePlayer(seller), cost); Map placeholders = new HashMap<>(); - String price = Methods.getPrice(id, false); + String price = String.valueOf(auction.getPrice()); placeholders.put("%Price%", price); placeholders.put("%price%", price); @@ -231,22 +217,23 @@ public class BuyingMenu extends Holder { FileConfiguration config = Files.config.getConfiguration(); - String sound = config.getString("Settings.Sold-Item-Sound", ""); + String sound = config.getString("Settings.Sold-Item-Sound", "UI_BUTTON_CLICK"); if (sound.isEmpty()) return; - try { - player.playSound(player.getLocation(), Sound.valueOf(sound), 1f, 1f); - } catch (Exception ignored) {} + player.playSound(player.getLocation(), Sound.valueOf(sound), 1f, 1f); } } - player.getInventory().addItem(i); + player.getInventory().addItem(item); + + data.set("active_auctions." + player.getUniqueId() + "." + id, null); + + this.userManager.removeAuctionItem(this.auction); - data.set("Items." + id, null); Files.data.save(); - menu.click(player); + buyingMenu.click(player); GuiManager.openShop(player, HolderManager.getShopType(player), HolderManager.getShopCategory(player), 1); } @@ -254,7 +241,7 @@ public class BuyingMenu extends Holder { case "Cancel" -> { GuiManager.openShop(player, HolderManager.getShopType(player), HolderManager.getShopCategory(player), 1); - menu.click(player); + buyingMenu.click(player); } } } diff --git a/paper/src/main/java/com/badbones69/crazyauctions/tasks/objects/AuctionItem.java b/paper/src/main/java/com/badbones69/crazyauctions/tasks/objects/AuctionItem.java index a8efdd8..0ffda54 100644 --- a/paper/src/main/java/com/badbones69/crazyauctions/tasks/objects/AuctionItem.java +++ b/paper/src/main/java/com/badbones69/crazyauctions/tasks/objects/AuctionItem.java @@ -116,6 +116,10 @@ public class AuctionItem { return this.itemStack; } + public final ItemBuilder asItemBuilder() { + return new ItemBuilder(this.itemStack); + } + public final String asBase64() { return Methods.toBase64(asItemStack()); } @@ -163,7 +167,9 @@ public class AuctionItem { } } - itemBuilder.setLore(lore).addString(getStoreID(), Keys.auction_store_id.getNamespacedKey()); + itemBuilder.setLore(lore) + .addString(this.id, Keys.auction_number.getNamespacedKey()) + .addString(getStoreID(), Keys.auction_store_id.getNamespacedKey()); return itemBuilder; }