From 8597361e79a4e8b301d5792967388ad59cdeafca Mon Sep 17 00:00:00 2001 From: officereso Date: Wed, 10 Jun 2020 04:17:48 -0500 Subject: [PATCH] PlayerSelectionWrapper kit choices are now set. --- .../officereso/PlayerSelectionWrapper.java | 42 ++++++++- src/main/java/io/github/officereso/pvp.java | 85 +++++++++++++++---- 2 files changed, 108 insertions(+), 19 deletions(-) diff --git a/src/main/java/io/github/officereso/PlayerSelectionWrapper.java b/src/main/java/io/github/officereso/PlayerSelectionWrapper.java index 536390c..048fbb9 100644 --- a/src/main/java/io/github/officereso/PlayerSelectionWrapper.java +++ b/src/main/java/io/github/officereso/PlayerSelectionWrapper.java @@ -6,6 +6,7 @@ import java.lang.reflect.Array; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; public class PlayerSelectionWrapper { public final Player player; @@ -14,8 +15,8 @@ public class PlayerSelectionWrapper { public Kit selectedChestplate; public Kit selectedLeggings; public Kit selectedBoots; - public HashMap selectedPotions; - public HashMap selectedAdditions; + public HashMap selectedPotions = new HashMap<>(); + public HashMap selectedAdditions = new HashMap<>(); public PlayerSelectionWrapper(Player player, Kit kit) { this.player = player; @@ -49,10 +50,33 @@ public class PlayerSelectionWrapper { public HashMap getGreenSlots() { HashMap slots = new HashMap<>(); if (selectedKit != null) { - slots.put(selectedKit.getViewPosition(), selectedKit.getViewPosition()); + slots.put(selectedKit.getViewPosition(), 1); } if (selectedHelmet != null) { - slots.put(selectedHelmet.getViewPosition(), selectedHelmet.getViewPosition()); + slots.put(selectedHelmet.getViewPosition(), 1); + } + if (selectedChestplate != null) { + slots.put(selectedChestplate.getViewPosition(), 1); + } + if (selectedLeggings != null) { + slots.put(selectedLeggings.getViewPosition(), 1); + } + if (selectedBoots != null) { + slots.put(selectedBoots.getViewPosition(), 1); + } + if (selectedPotions != null) { + for (Map.Entry entryKit : selectedPotions.entrySet()) { + if (entryKit.getValue() == null) + continue; + slots.put(entryKit.getKey().getViewPosition(), entryKit.getValue()); + } + } + if (selectedAdditions != null) { + for (Map.Entry entryKit : selectedAdditions.entrySet()) { + if (entryKit.getValue() == null) + continue; + slots.put(entryKit.getKey().getViewPosition(), entryKit.getValue()); + } } return slots; @@ -63,6 +87,11 @@ public class PlayerSelectionWrapper { } public void addAdditions(Kit kit, int amount) { + selectedAdditions.putIfAbsent(kit, 0); + if (selectedAdditions.get(kit) + amount <= 0) { + selectedAdditions.put(kit, null); + return; + } selectedAdditions.put(kit, selectedAdditions.get(kit) + amount); } @@ -83,6 +112,11 @@ public class PlayerSelectionWrapper { } public void addPotions(Kit kit, int amount) { + selectedPotions.putIfAbsent(kit, 0); + if (selectedPotions.get(kit) + amount <= 0) { + selectedPotions.put(kit, null); + return; + } selectedPotions.put(kit, selectedPotions.get(kit) + amount); } diff --git a/src/main/java/io/github/officereso/pvp.java b/src/main/java/io/github/officereso/pvp.java index a366d0b..ad5b824 100644 --- a/src/main/java/io/github/officereso/pvp.java +++ b/src/main/java/io/github/officereso/pvp.java @@ -10,6 +10,7 @@ import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.inventory.ClickType; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -80,26 +81,80 @@ public class pvp extends JavaPlugin implements Listener { public void slotFunction(Slot slot, Kit kit, PlayerSelectionWrapper selectionWrapper, Menu menu) { slot.setClickHandler((player, info) -> { - if (kit.getType() == Kit.Type.KIT) { - if (selectionWrapper.getSelectedKit() != kit) { - for (Map.Entry entryKit : kits.entrySet()) { - Kit updateKit = entryKit.getValue(); - int slotPos = entryKit.getKey(); - Slot updateSlot = menu.getSlot(slotPos); - selectionWrapper.setSelectedKit(kit); - if (selectionWrapper.getGreenSlots().get(slotPos) != null) { - updateSlot.setItem(new ItemStack(Material.GREEN_WOOL)); - } else { - updateSlot.setItem(updateKit.getInventoryItemList().get(0).getItemStack()); - } - } + Kit.Type type = kit.getType(); + if (type == Kit.Type.KIT) { + if (info.getClickType() == ClickType.LEFT) { + selectionWrapper.setSelectedKit(kit); + updateMenu(selectionWrapper, menu); + } else if (info.getClickType() == ClickType.RIGHT) { + selectionWrapper.setSelectedKit(null); + updateMenu(selectionWrapper, menu); + } + } else if (type == Kit.Type.HELMET) { + if (info.getClickType() == ClickType.LEFT) { + selectionWrapper.setSelectedHelmet(kit); + updateMenu(selectionWrapper, menu); + } else if (info.getClickType() == ClickType.RIGHT) { + selectionWrapper.setSelectedHelmet(null); + updateMenu(selectionWrapper, menu); + } + } else if (type == Kit.Type.CHESTPLATE) { + if (info.getClickType() == ClickType.LEFT) { + selectionWrapper.setSelectedChestplate(kit); + updateMenu(selectionWrapper, menu); + } else if (info.getClickType() == ClickType.RIGHT) { + selectionWrapper.setSelectedChestplate(null); + updateMenu(selectionWrapper, menu); + } + } else if (type == Kit.Type.LEGGINGS) { + if (info.getClickType() == ClickType.LEFT) { + selectionWrapper.setSelectedLeggings(kit); + updateMenu(selectionWrapper, menu); + } else if (info.getClickType() == ClickType.RIGHT) { + selectionWrapper.setSelectedLeggings(null); + updateMenu(selectionWrapper, menu); + } + } else if (type == Kit.Type.BOOTS) { + if (info.getClickType() == ClickType.LEFT) { + selectionWrapper.setSelectedBoots(kit); + updateMenu(selectionWrapper, menu); + } else if (info.getClickType() == ClickType.RIGHT) { + selectionWrapper.setSelectedBoots(null); + updateMenu(selectionWrapper, menu); + } + } else if (type == Kit.Type.POTION) { + if (info.getClickType() == ClickType.LEFT) { + selectionWrapper.addPotions(kit, 1); + updateMenu(selectionWrapper, menu); + } else if (info.getClickType() == ClickType.RIGHT) { + selectionWrapper.addPotions(kit, -1); + updateMenu(selectionWrapper, menu); + } + } else if (type == Kit.Type.ADDITIONAL) { + if (info.getClickType() == ClickType.LEFT) { + selectionWrapper.addAdditions(kit, 1); + updateMenu(selectionWrapper, menu); + } else if (info.getClickType() == ClickType.RIGHT) { + selectionWrapper.addAdditions(kit, -1); + updateMenu(selectionWrapper, menu); } } - if (kit.getType() == Kit.Type.HELMET) - System.out.println("ldkfsjld"); }); } + private void updateMenu(PlayerSelectionWrapper selectionWrapper, Menu menu) { + for (Map.Entry entryKit : kits.entrySet()) { + Kit updateKit = entryKit.getValue(); + int slotPos = entryKit.getKey(); + Slot updateSlot = menu.getSlot(slotPos); + if (selectionWrapper.getGreenSlots().get(slotPos) != null) { + updateSlot.setItem(new ItemStack(Material.GREEN_WOOL, selectionWrapper.getGreenSlots().get(slotPos))); + } else { + updateSlot.setItem(updateKit.getInventoryItemList().get(0).getItemStack()); + } + } + } + public void load() { World world = Bukkit.getWorld("world"); String[] signPos = config.getString("sign_pos").split(" ");