From 7b35a506df64b65cb457144295771de71216f6ea Mon Sep 17 00:00:00 2001 From: Crispi2k24 Date: Wed, 23 Sep 2026 15:20:41 +0200 Subject: [PATCH] Add an amount argument to the minion give command --- .../minions/command/MinionGiveCommand.java | 14 ++++++++++---- .../minions/item/MinionItemFactory.java | 8 ++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/eternalminions-plugin/src/main/java/com/eternalcode/minions/command/MinionGiveCommand.java b/eternalminions-plugin/src/main/java/com/eternalcode/minions/command/MinionGiveCommand.java index 5f42d8b..3c65c3a 100644 --- a/eternalminions-plugin/src/main/java/com/eternalcode/minions/command/MinionGiveCommand.java +++ b/eternalminions-plugin/src/main/java/com/eternalcode/minions/command/MinionGiveCommand.java @@ -32,21 +32,27 @@ public MinionGiveCommand( @Execute(name = "give") @Permission("eternalminions.command.give") public Notice give(@Context Player player) { - return this.give(player, this.behaviors.defaultBehavior()); + return this.give(player, this.behaviors.defaultBehavior(), 1); } @Execute(name = "give") @Permission("eternalminions.command.give") public Notice give(@Context Player player, @Arg("type") String type) { + return this.give(player, type, 1); + } + + @Execute(name = "give") + @Permission("eternalminions.command.give") + public Notice give(@Context Player player, @Arg("type") String type, @Arg("amount") int amount) { MinionBehavior behavior = this.behaviors.find(type).orElse(null); if (behavior == null) { return this.messages.minionTypeUnknown; } - return this.give(player, behavior); + return this.give(player, behavior, amount); } - private Notice give(Player player, MinionBehavior behavior) { - player.getInventory().addItem(this.items.create(behavior)); + private Notice give(Player player, MinionBehavior behavior, int amount) { + player.getInventory().addItem(this.items.create(behavior, amount)); return this.messages.minionItemReceived; } } diff --git a/eternalminions-plugin/src/main/java/com/eternalcode/minions/item/MinionItemFactory.java b/eternalminions-plugin/src/main/java/com/eternalcode/minions/item/MinionItemFactory.java index 6765772..2e2c789 100644 --- a/eternalminions-plugin/src/main/java/com/eternalcode/minions/item/MinionItemFactory.java +++ b/eternalminions-plugin/src/main/java/com/eternalcode/minions/item/MinionItemFactory.java @@ -29,6 +29,8 @@ public final class MinionItemFactory { + private static final int MAX_AMOUNT = 576; + private final MinionBehaviorRegistry behaviors; private final MinionAppearanceItems appearance; private final MiniMessage miniMessage; @@ -58,6 +60,12 @@ public MinionItemFactory( this.upgradesKey = new NamespacedKey(plugin, "minion_upgrades"); } + public ItemStack create(MinionBehavior behavior, int amount) { + ItemStack item = this.create(behavior); + item.setAmount(Math.max(1, Math.min(amount, MAX_AMOUNT))); + return item; + } + public ItemStack create(MinionBehavior behavior) { ItemStack item = this.appearance.head(behavior.config()); ItemMeta meta = item.getItemMeta();