Started work on confirm button

This commit is contained in:
Teriuihi 2022-01-10 19:53:09 +01:00
parent 58cd8b868d
commit f8dccf5645
9 changed files with 44 additions and 15 deletions

View File

@ -3,6 +3,7 @@ package com.alttd.GUI;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.Merchant; import org.bukkit.inventory.Merchant;
import org.bukkit.inventory.MerchantInventory;
import java.util.HashMap; import java.util.HashMap;
import java.util.UUID; import java.util.UUID;
@ -19,4 +20,6 @@ public interface GUI {
Inventory getInventory(); Inventory getInventory();
Merchant getMerchant(); Merchant getMerchant();
void setMerchantInventory(MerchantInventory merchantInventory);
} }

View File

@ -4,4 +4,4 @@ import org.bukkit.entity.Player;
public interface GUIAction { public interface GUIAction {
void click(Player player); void click(Player player);
} }

View File

@ -7,6 +7,8 @@ import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Merchant; import org.bukkit.inventory.Merchant;
import org.bukkit.inventory.MerchantInventory;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap; import java.util.HashMap;
@ -31,7 +33,7 @@ public abstract class GUIInventory implements GUI {
} }
public void setItem(int slot, ItemStack stack, GUIAction action){ public void setItem(int slot, ItemStack stack, GUIAction action){
inventory.setItem(slot, stack); this.inventory.setItem(slot, stack);
if (action != null){ if (action != null){
guiActions.put(slot, action); guiActions.put(slot, action);
} }
@ -53,4 +55,9 @@ public abstract class GUIInventory implements GUI {
public GUIAction getGuiAction(int slot) { public GUIAction getGuiAction(int slot) {
return guiActions.get(slot); return guiActions.get(slot);
} }
@Override
public void setMerchantInventory(MerchantInventory merchantInventory) {
}
} }

View File

@ -7,6 +7,7 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.TradeSelectEvent; import org.bukkit.event.inventory.TradeSelectEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.MerchantInventory;
public class GUIListener implements Listener { public class GUIListener implements Listener {
@ -48,6 +49,8 @@ public class GUIListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
GUIAction action = guiMerchant.getTradeAction(event.getIndex()); GUIAction action = guiMerchant.getTradeAction(event.getIndex());
gui.setMerchantInventory(event.getInventory());
if (action != null){ if (action != null){
action.click(player); action.click(player);
} }

View File

@ -3,18 +3,17 @@ package com.alttd.GUI;
import com.alttd.objects.VillagerType; import com.alttd.objects.VillagerType;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.*; import org.bukkit.inventory.*;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
public abstract class GUIMerchant implements GUI{ public abstract class GUIMerchant implements GUI{
private MerchantInventory merchantInventory;
protected final Merchant merchant; protected final Merchant merchant;
protected final HashMap<Integer, GUIAction> tradeActions; protected final HashMap<Integer, GUIAction> tradeActions;
protected final HashMap<Integer, GUIAction> guiActions; protected final HashMap<Integer, GUIAction> guiActions;
@ -50,8 +49,7 @@ public abstract class GUIMerchant implements GUI{
} }
public void setItem(int slot, @NotNull ItemStack itemStack, @Nullable GUIAction action) { public void setItem(int slot, @NotNull ItemStack itemStack, @Nullable GUIAction action) {
Inventory inventory = (Inventory) merchant; merchantInventory.setItem(slot, itemStack);
inventory.setItem(slot, itemStack);
if (action != null) if (action != null)
guiActions.put(slot, action); guiActions.put(slot, action);
} }
@ -72,4 +70,9 @@ public abstract class GUIMerchant implements GUI{
public VillagerType getVillagerType() { public VillagerType getVillagerType() {
return villagerType; return villagerType;
} }
@Override
public void setMerchantInventory(MerchantInventory merchantInventory) {
this.merchantInventory = merchantInventory;
}
} }

View File

@ -27,6 +27,15 @@ import java.util.Objects;
public class BuyGUI extends GUIMerchant { public class BuyGUI extends GUIMerchant {
private static final MiniMessage miniMessage = MiniMessage.miniMessage(); 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("<green>Confirm</green>"));
itemStack.setItemMeta(itemMeta);
confirm = itemStack;
}
public BuyGUI(VillagerType villagerType, EconUser econUser, boolean bulk) { public BuyGUI(VillagerType villagerType, EconUser econUser, boolean bulk) {
super(miniMessage.deserialize(Config.BUY_WINDOW, TemplateResolver.resolving( super(miniMessage.deserialize(Config.BUY_WINDOW, TemplateResolver.resolving(
@ -66,12 +75,15 @@ public class BuyGUI extends GUIMerchant {
)); ));
return; return;
} }
buy2(player, amount, cost, material, econUser, villagerType, transPts, oldPoints, price); ItemStack itemStack = new ItemStack(Material.CANDLE);
// setItem(0, new ItemStack(material), null); ItemMeta itemMeta = itemStack.getItemMeta();
// setItem(1, new ItemStack(Material.CANDLE), null); itemMeta.displayName(miniMessage.deserialize(String.valueOf(cost)));
// setItem(2, new ItemStack(Material.EMERALD_BLOCK), player1 -> itemStack.setItemMeta(itemMeta);
// buy2(player1, amount, cost, material, econUser, villagerType, transPts, oldPoints, price)); setItem(0, new ItemStack(material), null);
// player.updateInventory(); 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) { 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() Bukkit.getServer().getPluginManager()
.callEvent(new SpawnShopEvent(player, amount, cost, material, .callEvent(new SpawnShopEvent(player, amount, cost, material,
oldPoints, newPoints, true)); oldPoints, newPoints, true));
// buy(villagerType, player, material, amount, price); buy(villagerType, player, material, amount, price);
} }
private ItemStack getPriceItem(double price) { private ItemStack getPriceItem(double price) {

View File

@ -19,6 +19,7 @@ import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.MerchantInventory;
import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;

View File

@ -91,7 +91,7 @@ public class EconUser {
int remove = points; int remove = points;
if (remove < 0) if (remove < 0)
remove *= -1; remove *= -1;
int i = (int) (0.9 * remove) - 10; int i = (int) (0.93 * remove) - 30;
setPoints(villagerType, i < 10 && i > -10 ? 0 : i); setPoints(villagerType, i < 10 && i > -10 ? 0 : i);
}); });
} }

View File

@ -26,7 +26,7 @@ public class Utilities {
// if (tmp > 4) // if (tmp > 4)
// total += 0.01; // total += 0.01;
return (double) (Math.round(num * scale)) / scale; return ((int) (num * scale)) / scale;
} }
/** /**