|
@@ -1,9 +1,10 @@
|
|
|
package me.lethunderhawk.tradeplugin.listener;
|
|
package me.lethunderhawk.tradeplugin.listener;
|
|
|
|
|
|
|
|
|
|
+import me.lethunderhawk.bazaarflux.util.gui.input.SignMenuFactory;
|
|
|
import me.lethunderhawk.economy.EconomyModule;
|
|
import me.lethunderhawk.economy.EconomyModule;
|
|
|
|
|
+import me.lethunderhawk.economy.util.EconomyUtil;
|
|
|
import me.lethunderhawk.main.Main;
|
|
import me.lethunderhawk.main.Main;
|
|
|
import me.lethunderhawk.tradeplugin.TradeModule;
|
|
import me.lethunderhawk.tradeplugin.TradeModule;
|
|
|
-import me.lethunderhawk.tradeplugin.input.player.NumberInputGUI;
|
|
|
|
|
import me.lethunderhawk.tradeplugin.trade.TradeInventory;
|
|
import me.lethunderhawk.tradeplugin.trade.TradeInventory;
|
|
|
import me.lethunderhawk.tradeplugin.trade.TradeManager;
|
|
import me.lethunderhawk.tradeplugin.trade.TradeManager;
|
|
|
import me.lethunderhawk.tradeplugin.trade.TradeSession;
|
|
import me.lethunderhawk.tradeplugin.trade.TradeSession;
|
|
@@ -16,11 +17,12 @@ import org.bukkit.event.EventHandler;
|
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.Listener;
|
|
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
|
|
-import org.bukkit.event.inventory.InventoryType;
|
|
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
import org.bukkit.inventory.meta.ItemMeta;
|
|
import org.bukkit.inventory.meta.ItemMeta;
|
|
|
import org.bukkit.persistence.PersistentDataType;
|
|
import org.bukkit.persistence.PersistentDataType;
|
|
|
|
|
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+
|
|
|
import static me.lethunderhawk.tradeplugin.trade.TradeSession.getFluxKey;
|
|
import static me.lethunderhawk.tradeplugin.trade.TradeSession.getFluxKey;
|
|
|
import static me.lethunderhawk.tradeplugin.trade.TradeSession.getValueKey;
|
|
import static me.lethunderhawk.tradeplugin.trade.TradeSession.getValueKey;
|
|
|
|
|
|
|
@@ -38,9 +40,6 @@ public class InventoryListener implements Listener {
|
|
|
if (!(e.getWhoClicked() instanceof Player p)) return;
|
|
if (!(e.getWhoClicked() instanceof Player p)) return;
|
|
|
TradeSession session = manager.getSession(p);
|
|
TradeSession session = manager.getSession(p);
|
|
|
if (session == null) return;
|
|
if (session == null) return;
|
|
|
- if(e.getInventory().getType() == InventoryType.ANVIL) return;
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
int slot = e.getRawSlot();
|
|
int slot = e.getRawSlot();
|
|
|
if (!session.getTradeInventory().isValidInventoryClick(slot)) {
|
|
if (!session.getTradeInventory().isValidInventoryClick(slot)) {
|
|
|
e.setCancelled(true);
|
|
e.setCancelled(true);
|
|
@@ -48,19 +47,17 @@ public class InventoryListener implements Listener {
|
|
|
}else if (session.getTradeInventory().isInsideOwnTradeMenu(slot)) {
|
|
}else if (session.getTradeInventory().isInsideOwnTradeMenu(slot)) {
|
|
|
ItemStack item = e.getCurrentItem();
|
|
ItemStack item = e.getCurrentItem();
|
|
|
e.setCancelled(true);
|
|
e.setCancelled(true);
|
|
|
-
|
|
|
|
|
if (item == null) return;
|
|
if (item == null) return;
|
|
|
-
|
|
|
|
|
ItemMeta meta = item.getItemMeta();
|
|
ItemMeta meta = item.getItemMeta();
|
|
|
if (meta != null && meta.getPersistentDataContainer()
|
|
if (meta != null && meta.getPersistentDataContainer()
|
|
|
.has(getFluxKey(), PersistentDataType.INTEGER)) {
|
|
.has(getFluxKey(), PersistentDataType.INTEGER)) {
|
|
|
|
|
|
|
|
// ---- Flux item clicked ----
|
|
// ---- Flux item clicked ----
|
|
|
- Integer value = meta.getPersistentDataContainer()
|
|
|
|
|
- .get(getValueKey(), PersistentDataType.INTEGER);
|
|
|
|
|
|
|
+ Long value = meta.getPersistentDataContainer()
|
|
|
|
|
+ .get(getValueKey(), PersistentDataType.LONG);
|
|
|
|
|
|
|
|
if (value != null) {
|
|
if (value != null) {
|
|
|
- session.removeFlux(p, value); // update numbers
|
|
|
|
|
|
|
+ session.removeFlux(p, value);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Remove the display item from trade UI
|
|
// Remove the display item from trade UI
|
|
@@ -78,12 +75,9 @@ public class InventoryListener implements Listener {
|
|
|
|
|
|
|
|
if (slot == TradeInventory.ACCEPT_SLOT) {
|
|
if (slot == TradeInventory.ACCEPT_SLOT) {
|
|
|
e.setCancelled(true);
|
|
e.setCancelled(true);
|
|
|
-
|
|
|
|
|
if(session.accept(p)) {
|
|
if(session.accept(p)) {
|
|
|
session.undoAccept(p);
|
|
session.undoAccept(p);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
if (session.getTradeState() == TradeState.COMPLETED) {
|
|
if (session.getTradeState() == TradeState.COMPLETED) {
|
|
|
manager.endTrade(session, true);
|
|
manager.endTrade(session, true);
|
|
|
return;
|
|
return;
|
|
@@ -93,36 +87,7 @@ public class InventoryListener implements Listener {
|
|
|
|
|
|
|
|
if (slot == TradeInventory.FLUX_SLOT) {
|
|
if (slot == TradeInventory.FLUX_SLOT) {
|
|
|
e.setCancelled(true);
|
|
e.setCancelled(true);
|
|
|
- new NumberInputGUI(
|
|
|
|
|
- Main.getInstance(),
|
|
|
|
|
- p,
|
|
|
|
|
- "§6Zahleneingabe",
|
|
|
|
|
- 0,
|
|
|
|
|
- EconomyModule.getInstance().getEconomyAPI().getMoney(p.getUniqueId()) - manager.getSession(p).getMoneyFor(p),
|
|
|
|
|
- 0,
|
|
|
|
|
- (player, value) -> {
|
|
|
|
|
- TradeSession originalSession = manager.getSession(player);
|
|
|
|
|
- if (value != null && value > 0) {
|
|
|
|
|
- if(EconomyModule.getInstance().getEconomyAPI().getMoney(player.getUniqueId()) >= value){
|
|
|
|
|
- if(originalSession.addFluxValue(player, value)){
|
|
|
|
|
- TradeModule.sendText(player, Component.text("Added " + value + " Flux to the trade"));
|
|
|
|
|
- }else{
|
|
|
|
|
- TradeModule.sendText(player, Component.text("No free space in menu!"));
|
|
|
|
|
- }
|
|
|
|
|
- }else{
|
|
|
|
|
- TradeModule.sendText(player,Component.text("You don't have enough money!", NamedTextColor.RED));
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- TradeModule.sendText(player,Component.text("!", NamedTextColor.RED));
|
|
|
|
|
- }
|
|
|
|
|
- player.openInventory(originalSession.getTradeInventory().getInventoryFor(player));
|
|
|
|
|
- }
|
|
|
|
|
- ).open();
|
|
|
|
|
-// SignInputManager signInput = new SignInputManager(Main.getInstance());
|
|
|
|
|
-// signInput.openSignInput(p, (player, text) -> {
|
|
|
|
|
-// player.sendMessage("Du hast eingegeben: " + text);
|
|
|
|
|
-// // parse ints, handle input …
|
|
|
|
|
-// });
|
|
|
|
|
|
|
+ openSignMenu(p);
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
if(slot >= TradeInventory.TRADE_INV_SIZE){
|
|
if(slot >= TradeInventory.TRADE_INV_SIZE){
|
|
@@ -136,11 +101,38 @@ public class InventoryListener implements Listener {
|
|
|
e.setCancelled(true);
|
|
e.setCancelled(true);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- return;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private void openSignMenu(Player p) {
|
|
|
|
|
+ SignMenuFactory.Menu signInput = new SignMenuFactory(Main.getInstance()).newMenu(List.of("", "^^^^^^^^^^^^", "Input the amount", "to trade"))
|
|
|
|
|
+ .reopenIfFail(true)
|
|
|
|
|
+ .response((player, input) -> {
|
|
|
|
|
+ long value = EconomyUtil.longFromString(input[0]);
|
|
|
|
|
+ TradeSession originalSession = manager.getSession(player);
|
|
|
|
|
+ if (value > 0) {
|
|
|
|
|
+ if(EconomyModule.getInstance().getEconomyAPI().getMoney(player.getUniqueId()) >= originalSession.getMoneyFor(p) + value){
|
|
|
|
|
+ if(originalSession.addFluxValue(player, value)){
|
|
|
|
|
+ player.openInventory(originalSession.getTradeInventory().getInventoryFor(player));
|
|
|
|
|
+ }else{
|
|
|
|
|
+ TradeModule.sendText(player, Component.text("No free space in menu!"));
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ }else{
|
|
|
|
|
+ TradeModule.sendText(player,Component.text("You don't have enough money!", NamedTextColor.RED));
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ TradeModule.sendText(player,Component.text("You cant pay negative amounts!!", NamedTextColor.RED));
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ player.openInventory(originalSession.getTradeInventory().getInventoryFor(player));
|
|
|
|
|
+ return true;
|
|
|
|
|
+ });
|
|
|
|
|
+ signInput.open(p);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@EventHandler
|
|
@EventHandler
|
|
|
public void onInventoryClose(InventoryCloseEvent e) {
|
|
public void onInventoryClose(InventoryCloseEvent e) {
|
|
|
Player p = (Player) e.getPlayer();
|
|
Player p = (Player) e.getPlayer();
|
|
@@ -150,6 +142,5 @@ public class InventoryListener implements Listener {
|
|
|
&& e.getReason() != InventoryCloseEvent.Reason.OPEN_NEW) {
|
|
&& e.getReason() != InventoryCloseEvent.Reason.OPEN_NEW) {
|
|
|
manager.endTrade(session, false);
|
|
manager.endTrade(session, false);
|
|
|
}
|
|
}
|
|
|
-// p.sendMessage("Reason: " + e.getReason() + ", Type: " + e.getInventory().getType());
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|