From f8dccf5645c8b530fe0db2d6171c116d95f920ff Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Mon, 10 Jan 2022 19:53:09 +0100 Subject: [PATCH] Started work on confirm button --- src/main/java/com/alttd/GUI/GUI.java | 3 +++ src/main/java/com/alttd/GUI/GUIAction.java | 2 +- src/main/java/com/alttd/GUI/GUIInventory.java | 9 ++++++- src/main/java/com/alttd/GUI/GUIListener.java | 3 +++ src/main/java/com/alttd/GUI/GUIMerchant.java | 11 +++++--- .../java/com/alttd/GUI/windows/BuyGUI.java | 26 ++++++++++++++----- .../java/com/alttd/GUI/windows/SellGUI.java | 1 + src/main/java/com/alttd/objects/EconUser.java | 2 +- src/main/java/com/alttd/util/Utilities.java | 2 +- 9 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/alttd/GUI/GUI.java b/src/main/java/com/alttd/GUI/GUI.java index 4f0fc9d..6e1c0ae 100644 --- a/src/main/java/com/alttd/GUI/GUI.java +++ b/src/main/java/com/alttd/GUI/GUI.java @@ -3,6 +3,7 @@ package com.alttd.GUI; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Merchant; +import org.bukkit.inventory.MerchantInventory; import java.util.HashMap; import java.util.UUID; @@ -19,4 +20,6 @@ public interface GUI { Inventory getInventory(); Merchant getMerchant(); + + void setMerchantInventory(MerchantInventory merchantInventory); } diff --git a/src/main/java/com/alttd/GUI/GUIAction.java b/src/main/java/com/alttd/GUI/GUIAction.java index 3a1c6d2..a2a176d 100644 --- a/src/main/java/com/alttd/GUI/GUIAction.java +++ b/src/main/java/com/alttd/GUI/GUIAction.java @@ -4,4 +4,4 @@ import org.bukkit.entity.Player; public interface GUIAction { void click(Player player); -} +} \ No newline at end of file diff --git a/src/main/java/com/alttd/GUI/GUIInventory.java b/src/main/java/com/alttd/GUI/GUIInventory.java index f53caec..52d16f5 100644 --- a/src/main/java/com/alttd/GUI/GUIInventory.java +++ b/src/main/java/com/alttd/GUI/GUIInventory.java @@ -7,6 +7,8 @@ import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.Merchant; +import org.bukkit.inventory.MerchantInventory; +import org.jetbrains.annotations.Nullable; import java.util.HashMap; @@ -31,7 +33,7 @@ public abstract class GUIInventory implements GUI { } public void setItem(int slot, ItemStack stack, GUIAction action){ - inventory.setItem(slot, stack); + this.inventory.setItem(slot, stack); if (action != null){ guiActions.put(slot, action); } @@ -53,4 +55,9 @@ public abstract class GUIInventory implements GUI { public GUIAction getGuiAction(int slot) { return guiActions.get(slot); } + + @Override + public void setMerchantInventory(MerchantInventory merchantInventory) { + + } } diff --git a/src/main/java/com/alttd/GUI/GUIListener.java b/src/main/java/com/alttd/GUI/GUIListener.java index 91de3e0..ca73f0a 100644 --- a/src/main/java/com/alttd/GUI/GUIListener.java +++ b/src/main/java/com/alttd/GUI/GUIListener.java @@ -7,6 +7,7 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.TradeSelectEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.MerchantInventory; public class GUIListener implements Listener { @@ -48,6 +49,8 @@ public class GUIListener implements Listener { event.setCancelled(true); GUIAction action = guiMerchant.getTradeAction(event.getIndex()); + gui.setMerchantInventory(event.getInventory()); + if (action != null){ action.click(player); } diff --git a/src/main/java/com/alttd/GUI/GUIMerchant.java b/src/main/java/com/alttd/GUI/GUIMerchant.java index 3cfb832..f5ac5dc 100644 --- a/src/main/java/com/alttd/GUI/GUIMerchant.java +++ b/src/main/java/com/alttd/GUI/GUIMerchant.java @@ -3,18 +3,17 @@ package com.alttd.GUI; import com.alttd.objects.VillagerType; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; -import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; public abstract class GUIMerchant implements GUI{ + private MerchantInventory merchantInventory; protected final Merchant merchant; protected final HashMap tradeActions; protected final HashMap guiActions; @@ -50,8 +49,7 @@ public abstract class GUIMerchant implements GUI{ } public void setItem(int slot, @NotNull ItemStack itemStack, @Nullable GUIAction action) { - Inventory inventory = (Inventory) merchant; - inventory.setItem(slot, itemStack); + merchantInventory.setItem(slot, itemStack); if (action != null) guiActions.put(slot, action); } @@ -72,4 +70,9 @@ public abstract class GUIMerchant implements GUI{ public VillagerType getVillagerType() { return villagerType; } + + @Override + public void setMerchantInventory(MerchantInventory merchantInventory) { + this.merchantInventory = merchantInventory; + } } diff --git a/src/main/java/com/alttd/GUI/windows/BuyGUI.java b/src/main/java/com/alttd/GUI/windows/BuyGUI.java index bae409a..19d930b 100644 --- a/src/main/java/com/alttd/GUI/windows/BuyGUI.java +++ b/src/main/java/com/alttd/GUI/windows/BuyGUI.java @@ -27,6 +27,15 @@ import java.util.Objects; public class BuyGUI extends GUIMerchant { private static final MiniMessage miniMessage = MiniMessage.miniMessage(); + private static final ItemStack confirm; + + static { + ItemStack itemStack = new ItemStack(Material.EMERALD_BLOCK); + ItemMeta itemMeta = itemStack.getItemMeta(); + itemMeta.displayName(MiniMessage.miniMessage().deserialize("Confirm")); + itemStack.setItemMeta(itemMeta); + confirm = itemStack; + } public BuyGUI(VillagerType villagerType, EconUser econUser, boolean bulk) { super(miniMessage.deserialize(Config.BUY_WINDOW, TemplateResolver.resolving( @@ -66,12 +75,15 @@ public class BuyGUI extends GUIMerchant { )); return; } - buy2(player, amount, cost, material, econUser, villagerType, transPts, oldPoints, price); -// setItem(0, new ItemStack(material), null); -// setItem(1, new ItemStack(Material.CANDLE), null); -// setItem(2, new ItemStack(Material.EMERALD_BLOCK), player1 -> -// buy2(player1, amount, cost, material, econUser, villagerType, transPts, oldPoints, price)); -// player.updateInventory(); + ItemStack itemStack = new ItemStack(Material.CANDLE); + ItemMeta itemMeta = itemStack.getItemMeta(); + itemMeta.displayName(miniMessage.deserialize(String.valueOf(cost))); + itemStack.setItemMeta(itemMeta); + setItem(0, new ItemStack(material), null); + setItem(1, new ItemStack(Material.CANDLE), null); + setItem(2, confirm, player1 -> + buy2(player1, amount, cost, material, econUser, villagerType, transPts, oldPoints, price)); + player.updateInventory(); } private void buy2(Player player, int amount, double cost, Material material, EconUser econUser, VillagerType villagerType, int transPts, int oldPoints, Price price) { @@ -113,7 +125,7 @@ public class BuyGUI extends GUIMerchant { Bukkit.getServer().getPluginManager() .callEvent(new SpawnShopEvent(player, amount, cost, material, oldPoints, newPoints, true)); -// buy(villagerType, player, material, amount, price); + buy(villagerType, player, material, amount, price); } private ItemStack getPriceItem(double price) { diff --git a/src/main/java/com/alttd/GUI/windows/SellGUI.java b/src/main/java/com/alttd/GUI/windows/SellGUI.java index cf911eb..313fcd6 100644 --- a/src/main/java/com/alttd/GUI/windows/SellGUI.java +++ b/src/main/java/com/alttd/GUI/windows/SellGUI.java @@ -19,6 +19,7 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.MerchantInventory; import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.meta.ItemMeta; diff --git a/src/main/java/com/alttd/objects/EconUser.java b/src/main/java/com/alttd/objects/EconUser.java index 703e5f5..3bd416d 100644 --- a/src/main/java/com/alttd/objects/EconUser.java +++ b/src/main/java/com/alttd/objects/EconUser.java @@ -91,7 +91,7 @@ public class EconUser { int remove = points; if (remove < 0) remove *= -1; - int i = (int) (0.9 * remove) - 10; + int i = (int) (0.93 * remove) - 30; setPoints(villagerType, i < 10 && i > -10 ? 0 : i); }); } diff --git a/src/main/java/com/alttd/util/Utilities.java b/src/main/java/com/alttd/util/Utilities.java index 6c6eb57..6f9b6f1 100644 --- a/src/main/java/com/alttd/util/Utilities.java +++ b/src/main/java/com/alttd/util/Utilities.java @@ -26,7 +26,7 @@ public class Utilities { // if (tmp > 4) // total += 0.01; - return (double) (Math.round(num * scale)) / scale; + return ((int) (num * scale)) / scale; } /**