diff --git a/.gitignore b/.gitignore index bc0e40c..61b3b58 100644 --- a/.gitignore +++ b/.gitignore @@ -34,11 +34,6 @@ local.properties .iml .target/ -################# -## Maven -################# -.src/test/ - ################# ## Visual Studio ################# diff --git a/pom.xml b/pom.xml index 10d2e4a..4ff6d49 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.faris KingKits - 5.2.3 + 5.2.4 jar @@ -41,7 +41,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.10.1 + 2.10.3 true ${project.basedir} @@ -52,7 +52,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.2 + 3.5.1 1.7 1.7 @@ -61,7 +61,7 @@ org.apache.maven.plugins maven-shade-plugin - 2.3 + 2.4.3 false @@ -99,7 +99,7 @@ com.github.github site-maven-plugin - 0.11 + 0.12 Maven artifacts for ${project.version} true @@ -148,7 +148,7 @@ com.google.code.gson gson - 2.3.1 + 2.6.2 compile diff --git a/src/main/java/com/faris/kingkits/helper/util/ItemUtilities.java b/src/main/java/com/faris/kingkits/helper/util/ItemUtilities.java index 9ce321a..b331cd6 100644 --- a/src/main/java/com/faris/kingkits/helper/util/ItemUtilities.java +++ b/src/main/java/com/faris/kingkits/helper/util/ItemUtilities.java @@ -131,10 +131,19 @@ public static ItemStack deserializeItem(Map serializedItem, Item List itemFlags = new LinkedList<>(); for (String strItemFlag : strItemFlags) { try { - for (ItemFlag itemFlag : ItemFlag.values()) { - if (itemFlag.name().replace('_', ' ').equalsIgnoreCase(strItemFlag.replace('_', ' '))) { - itemFlags.add(itemFlag); - break; + if (strItemFlag.equals("*")) { + itemFlags.clear(); + for (ItemFlag itemFlag : ItemFlag.values()) { + if (itemFlag != null) itemFlags.add(itemFlag); + } + break; + } else { + strItemFlag = strItemFlag.toUpperCase().replace(' ', '_'); + for (ItemFlag itemFlag : ItemFlag.values()) { + if (itemFlag != null && itemFlag.name().equals(strItemFlag)) { + itemFlags.add(itemFlag); + break; + } } } } catch (Exception ex) { diff --git a/src/main/java/com/faris/kingkits/listener/CommandListener.java b/src/main/java/com/faris/kingkits/listener/CommandListener.java index 6758e88..f5ac9ac 100644 --- a/src/main/java/com/faris/kingkits/listener/CommandListener.java +++ b/src/main/java/com/faris/kingkits/listener/CommandListener.java @@ -8,10 +8,7 @@ import com.faris.kingkits.Kit; import com.faris.kingkits.Messages; import com.faris.kingkits.Permissions; -import com.faris.kingkits.controller.ConfigController; -import com.faris.kingkits.controller.KitController; -import com.faris.kingkits.controller.PlayerController; -import com.faris.kingkits.controller.SQLController; +import com.faris.kingkits.controller.*; import com.faris.kingkits.helper.util.*; import com.faris.kingkits.player.KitPlayer; import com.faris.kingkits.player.OfflineKitPlayer; @@ -67,6 +64,7 @@ public boolean onCommand(final CommandSender sender, Command cmd, String label, ConfigController.getInstance().loadConfiguration(); KitController.getInstance().loadKits(); + GuiController.getInstance().loadInventories(); SQLController.getInstance().setHandler(MySQLHandler.newInstance(this.plugin, ConfigController.getInstance().getSQLDetails())); SQLController.getInstance().openConnection(); diff --git a/src/main/java/com/faris/kingkits/listener/EventListener.java b/src/main/java/com/faris/kingkits/listener/EventListener.java index 9e1f14d..0e5e249 100644 --- a/src/main/java/com/faris/kingkits/listener/EventListener.java +++ b/src/main/java/com/faris/kingkits/listener/EventListener.java @@ -126,12 +126,12 @@ public void onPlayerInteract(PlayerInteractEvent event) { try { if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) { if (event.getItem() != null) { - if (event.getMaterial() == ConfigController.getInstance().getGuiItemType() && (ConfigController.getInstance().getGuiItemData() == -1 || event.getItem().getDurability() == ConfigController.getInstance().getGuiItemData())) { + if (event.getItem().getType() == ConfigController.getInstance().getGuiItemType() && (ConfigController.getInstance().getGuiItemData() == -1 || event.getItem().getDurability() == ConfigController.getInstance().getGuiItemData())) { if (Utilities.isPvPWorld(player.getWorld())) { GuiController.getInstance().openKitsMenu(player); event.setCancelled(true); } - } else if (event.getMaterial() == Material.MUSHROOM_SOUP) { + } else if (event.getItem().getType() == Material.MUSHROOM_SOUP) { if (ConfigController.getInstance().canQuickSoup()) { if (player.hasPermission(Permissions.SOUP_QUICKSOUP)) { if (Utilities.isPvPWorld(player.getWorld())) { @@ -146,6 +146,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { valid = false; } if (valid) { + event.setCancelled(true); if (soupAmount == 1) { if (event.getHand() == EquipmentSlot.HAND) player.getInventory().setItemInMainHand(new ItemStack(Material.BOWL)); @@ -160,7 +161,6 @@ else if (event.getHand() == EquipmentSlot.OFF_HAND) player.getInventory().setItemInOffHand(newItem); player.getInventory().addItem(new ItemStack(Material.BOWL)); } - event.setCancelled(true); } } } diff --git a/src/main/java/com/faris/kingkits/listener/commands/CommandRefill.java b/src/main/java/com/faris/kingkits/listener/commands/CommandRefill.java index ceeee57..503658a 100644 --- a/src/main/java/com/faris/kingkits/listener/commands/CommandRefill.java +++ b/src/main/java/com/faris/kingkits/listener/commands/CommandRefill.java @@ -36,13 +36,11 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String if (player.hasPermission(Permissions.COMMAND_SOUP_REFILL_SINGLE)) { if (player.getInventory().getItemInMainHand() != null && player.getInventory().getItemInMainHand().getType() == Material.BOWL) { int invContentsSize = 0; - ItemStack[] itemContents = player.getInventory().getStorageContents(); - for (ItemStack itemContent : itemContents) { - if (itemContent != null) { - if (itemContent.getType() != Material.AIR) invContentsSize++; - } + ItemStack[] invContents = player.getInventory().getStorageContents(); + for (ItemStack invContent : invContents) { + if (!ItemUtilities.isNull(invContent)) invContentsSize++; } - if (invContentsSize < itemContents.length) { + if (invContentsSize < invContents.length) { ItemStack itemInHand = player.getInventory().getItemInMainHand(); if (ConfigController.getInstance().getCostPerRefill() > 0D) { double cost = ConfigController.getInstance().getCostPerRefill(); @@ -64,6 +62,34 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String } else { Messages.sendMessage(player, Messages.COMMAND_REFILL_FULL_INV); } + } else if (player.getInventory().getItemInOffHand() != null && player.getInventory().getItemInOffHand().getType() == Material.BOWL) { + int invContentsSize = 0; + ItemStack[] invContents = player.getInventory().getStorageContents(); + for (ItemStack invContent : invContents) { + if (!ItemUtilities.isNull(invContent)) invContentsSize++; + } + if (invContentsSize < invContents.length) { + ItemStack itemInHand = player.getInventory().getItemInOffHand(); + if (ConfigController.getInstance().getCostPerRefill() > 0D) { + double cost = ConfigController.getInstance().getCostPerRefill(); + if (PlayerUtilities.getBalance(player) >= cost) { + PlayerUtilities.incrementMoney(player, -cost); + } else { + Messages.sendMessage(player, Messages.COMMAND_REFILL_NOT_ENOUGH_MONEY); + return true; + } + } + int amount = itemInHand.getAmount(); + if (amount <= 1) { + player.getInventory().setItemInOffHand(new ItemStack(Material.MUSHROOM_SOUP)); + } else { + itemInHand.setAmount(amount - 1); + player.getInventory().setItemInOffHand(itemInHand); + player.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP)); + } + } else { + Messages.sendMessage(player, Messages.COMMAND_REFILL_FULL_INV); + } } else { Messages.sendMessage(player, Messages.COMMAND_REFILL_BOWL); } @@ -76,18 +102,15 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String if (player.getInventory().getItemInMainHand() != null && player.getInventory().getItemInMainHand().getType() == Material.BOWL) { int invContentsSize = 0; ItemStack[] inventoryContents = player.getInventory().getStorageContents(); - for (ItemStack itemContent : inventoryContents) { - if (!ItemUtilities.isNull(itemContent)) invContentsSize++; + for (ItemStack invContent : inventoryContents) { + if (!ItemUtilities.isNull(invContent)) invContentsSize++; } - if (invContentsSize < player.getInventory().getSize()) { + if (invContentsSize < inventoryContents.length) { int bowlAmount = player.getInventory().getItemInMainHand().getAmount(); int invSize = 0, bowlsToGive = 0; - ItemStack[] itemContents = player.getInventory().getStorageContents(); - int invMaxSize = player.getInventory().getSize(); - for (ItemStack itemContent : itemContents) { - if (itemContent != null) { - if (itemContent.getType() != Material.AIR) invSize++; - } + int invMaxSize = inventoryContents.length; + for (ItemStack invContent : inventoryContents) { + if (!ItemUtilities.isNull(invContent)) invSize++; } for (int i = 0; i < bowlAmount; i++) { if (invSize + bowlsToGive < invMaxSize) { @@ -123,6 +146,53 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String player.getInventory().setItemInMainHand(new ItemStack(Material.MUSHROOM_SOUP)); } } + } else if (player.getInventory().getItemInOffHand() != null && player.getInventory().getItemInOffHand().getType() == Material.BOWL) { + int invContentsSize = 0; + ItemStack[] inventoryContents = player.getInventory().getStorageContents(); + for (ItemStack itemContent : inventoryContents) { + if (!ItemUtilities.isNull(itemContent)) invContentsSize++; + } + if (invContentsSize < inventoryContents.length) { + int bowlAmount = player.getInventory().getItemInOffHand().getAmount(); + int invSize = 0, bowlsToGive = 0; + int invMaxSize = inventoryContents.length; + for (ItemStack invContent : inventoryContents) { + if (!ItemUtilities.isNull(invContent)) invSize++; + } + for (int i = 0; i < bowlAmount; i++) { + if (invSize + bowlsToGive < invMaxSize) { + bowlsToGive++; + } + } + if (ConfigController.getInstance().getCostPerRefill() > 0D) { + double cost = ConfigController.getInstance().getCostPerRefill() * bowlsToGive; + if (PlayerUtilities.getBalance(player) >= cost) { + PlayerUtilities.incrementMoney(player, -cost); + } else { + Messages.sendMessage(player, Messages.COMMAND_REFILL_NOT_ENOUGH_MONEY); + return true; + } + } + for (int i = 0; i < bowlsToGive; i++) + player.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1)); + if (player.getInventory().getItemInOffHand().getAmount() - bowlsToGive > 0) + player.getInventory().setItemInOffHand(new ItemStack(Material.BOWL, player.getInventory().getItemInOffHand().getAmount() - bowlsToGive)); + else + player.getInventory().setItemInOffHand(new ItemStack(Material.AIR)); + } else { + if (player.getInventory().getItemInOffHand().getAmount() == 1) { + if (ConfigController.getInstance().getCostPerRefill() > 0D) { + double cost = ConfigController.getInstance().getCostPerRefill(); + if (PlayerUtilities.getBalance(player) >= cost) { + PlayerUtilities.incrementMoney(player, -cost); + } else { + Messages.sendMessage(player, Messages.COMMAND_REFILL_NOT_ENOUGH_MONEY); + return true; + } + } + player.getInventory().setItemInOffHand(new ItemStack(Material.MUSHROOM_SOUP)); + } + } } else { Messages.sendMessage(player, Messages.COMMAND_REFILL_BOWL); }