diff --git a/src/main/java/com/alttd/playerutils/commands/playerutils_subcommands/XPCheque.java b/src/main/java/com/alttd/playerutils/commands/playerutils_subcommands/XPCheque.java index 2ccb3ac..14ce595 100644 --- a/src/main/java/com/alttd/playerutils/commands/playerutils_subcommands/XPCheque.java +++ b/src/main/java/com/alttd/playerutils/commands/playerutils_subcommands/XPCheque.java @@ -35,9 +35,23 @@ public class XPCheque extends SubCommand { return true; } - if (args.length != 2) + if (args.length != 2 && args.length != 3) return false; + int amount = 1; + if (args.length == 3) { + try { + amount = Integer.parseInt(args[2]); + } catch (NumberFormatException e) { + return false; + } + } + + if (amount > 64 || amount < 1) { + commandSender.sendMiniMessage(Messages.XP_CHEQUE.INVALID_AMOUNT, null); + return true; + } + int xpValue; try { xpValue = Integer.parseInt(args[1]); @@ -51,7 +65,7 @@ public class XPCheque extends SubCommand { } int totalExperience = player.getTotalExperience(); - if (totalExperience < xpValue) { + if (totalExperience < (xpValue * amount)) { commandSender.sendMiniMessage(Messages.XP_CHEQUE.NOT_ENOUGH_XP, Placeholder.parsed("xp", String.valueOf(totalExperience))); return true; } @@ -62,21 +76,27 @@ public class XPCheque extends SubCommand { return true; } + if (heldItem.getAmount() < amount) { + commandSender.sendMiniMessage(Messages.XP_CHEQUE.NOT_ENOUGH_BOTTLE, Placeholder.parsed("amount", String.valueOf(amount))); + return true; + } + Optional optionalItemStack = getExpBottleItem(player, xpValue); if (optionalItemStack.isEmpty()) return true; ItemStack xpBottle = optionalItemStack.get(); + xpBottle.setAmount(amount); - decreaseExperience(player, xpValue); + decreaseExperience(player, xpValue * amount); - if (heldItem.getAmount() == 1) { + if (heldItem.getAmount() == amount) { player.getInventory().setItemInMainHand(xpBottle); player.updateInventory(); return true; } - heldItem.setAmount(heldItem.getAmount() - 1); + heldItem.setAmount(heldItem.getAmount() - amount); player.getInventory().addItem(xpBottle).values() .forEach(item -> player.getWorld().dropItemNaturally(player.getLocation(), item)); player.updateInventory(); diff --git a/src/main/java/com/alttd/playerutils/config/Messages.java b/src/main/java/com/alttd/playerutils/config/Messages.java index b868a2e..f1354d9 100644 --- a/src/main/java/com/alttd/playerutils/config/Messages.java +++ b/src/main/java/com/alttd/playerutils/config/Messages.java @@ -30,7 +30,7 @@ public class Messages extends AbstractConfig { public static String HELP_MESSAGE_WRAPPER = "PlayerUtils help:\n"; public static String HELP_MESSAGE = "Show this menu: /pu help"; public static String GLOW = "Glow in a specified color: /pu glow "; - public static String XP_CHEQUE = "Create an XP cheque: /pu xpcheque "; + public static String XP_CHEQUE = "Create an XP cheque: /pu xpcheque [amount]"; public static String XP_CALC = "Calculate the amount of XP between levels: /pu xpcalc "; public static String RELOAD = "Reload the configs for PlayerUtils: /pu reload"; public static String ROTATE_BLOCK = "Enable rotating blocks with a blaze rod: /pu rotateblock"; @@ -88,6 +88,8 @@ public class Messages extends AbstractConfig { public static String NOT_HOLDING_BOTTLE = "You need to hold an empty glass bottle while executing this command"; public static String DISPLAY_NAME = "XP bottle containing XP"; public static List LORE = List.of("Issued by ", "Throw to retrieve XP"); + public static String NOT_ENOUGH_BOTTLE = "You need to be holding glass bottles"; + public static String INVALID_AMOUNT = "You can only create between 1 and 64 xp cheque's at a time"; @SuppressWarnings("unused") private static void load() { @@ -97,6 +99,8 @@ public class Messages extends AbstractConfig { NOT_HOLDING_BOTTLE = config.getString(prefix, "not-holding-bottle", NOT_HOLDING_BOTTLE); DISPLAY_NAME = config.getString(prefix, "display-name", DISPLAY_NAME); LORE = config.getStringList(prefix, "lore", LORE); + NOT_ENOUGH_BOTTLE = config.getString(prefix, "not-enough-bottle", NOT_ENOUGH_BOTTLE); + INVALID_AMOUNT = config.getString(prefix, "invalid-amount", INVALID_AMOUNT); } } diff --git a/src/main/java/com/alttd/playerutils/event_listeners/RotateBlockEvent.java b/src/main/java/com/alttd/playerutils/event_listeners/RotateBlockEvent.java index be50345..ae2d24d 100644 --- a/src/main/java/com/alttd/playerutils/event_listeners/RotateBlockEvent.java +++ b/src/main/java/com/alttd/playerutils/event_listeners/RotateBlockEvent.java @@ -21,7 +21,6 @@ import org.bukkit.inventory.ItemStack; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; public class RotateBlockEvent implements Listener {