Started work on confirm button
This commit is contained in:
parent
58cd8b868d
commit
f8dccf5645
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,4 +4,4 @@ import org.bukkit.entity.Player;
|
|||
|
||||
public interface GUIAction {
|
||||
void click(Player player);
|
||||
}
|
||||
}
|
||||
|
|
@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<Integer, GUIAction> tradeActions;
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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("<green>Confirm</green>"));
|
||||
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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user