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.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);
}

View File

@ -4,4 +4,4 @@ import org.bukkit.entity.Player;
public interface GUIAction {
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.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) {
}
}

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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) {

View File

@ -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;

View File

@ -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);
});
}

View File

@ -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;
}
/**