From 733fb5bce81536160dd08c9acf55785640902b34 Mon Sep 17 00:00:00 2001 From: Ayham Al-Ali <20037329+AyhamAl-Ali@users.noreply.github.com> Date: Sun, 20 Aug 2023 10:29:29 +0300 Subject: [PATCH 1/2] Fix enchanting multiple items --- .../ch/njol/skript/effects/EffEnchant.java | 52 +++++++++---------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/src/main/java/ch/njol/skript/effects/EffEnchant.java b/src/main/java/ch/njol/skript/effects/EffEnchant.java index 7bd834a1caf..f417f90d4c1 100644 --- a/src/main/java/ch/njol/skript/effects/EffEnchant.java +++ b/src/main/java/ch/njol/skript/effects/EffEnchant.java @@ -53,55 +53,51 @@ public class EffEnchant extends Effect { } @SuppressWarnings("null") - private Expression item; + private Expression items; @Nullable - private Expression enchs; + private Expression enchantments; @SuppressWarnings({"unchecked", "null"}) @Override - public boolean init(final Expression[] exprs, final int matchedPattern, final Kleenean isDelayed, final ParseResult parseResult) { - item = (Expression) exprs[0]; - if (!ChangerUtils.acceptsChange(item, ChangeMode.SET, ItemStack.class)) { - Skript.error(item + " cannot be changed, thus it cannot be (dis)enchanted"); + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { + items = (Expression) exprs[0]; + if (!ChangerUtils.acceptsChange(items, ChangeMode.SET, ItemStack.class)) { + Skript.error(items + " cannot be changed, thus it cannot be (dis)enchanted"); return false; } if (matchedPattern == 0) - enchs = (Expression) exprs[1]; + enchantments = (Expression) exprs[1]; return true; } @Override - protected void execute(final Event e) { - final ItemType i = item.getSingle(e); - if (i == null) + protected void execute(Event event) { + ItemType[] items = this.items.getArray(event); + if (items.length == 0) // short circuit return; - if (enchs != null) { - final EnchantmentType[] types = enchs.getArray(e); + + if (enchantments != null) { + EnchantmentType[] types = enchantments.getArray(event); if (types.length == 0) return; - - for (final EnchantmentType type : types) { - Enchantment ench = type.getType(); - assert ench != null; - i.addEnchantments(new EnchantmentType(ench, type.getLevel())); + for (ItemType item : items) { + for (EnchantmentType type : types) { + Enchantment enchantment = type.getType(); + assert enchantment != null; + item.addEnchantments(new EnchantmentType(enchantment, type.getLevel())); + } } - item.change(e, new ItemType[] {i}, ChangeMode.SET); } else { - final EnchantmentType[] types = i.getEnchantmentTypes(); - if (types == null) - return; - - for (final EnchantmentType ench : types) { - assert ench != null; - i.removeEnchantments(ench); + for (ItemType item : items) { + item.clearEnchantments(); } - item.change(e, new ItemType[] {i}, ChangeMode.SET); } + this.items.change(event, items.clone(), ChangeMode.SET); } @Override - public String toString(final @Nullable Event e, final boolean debug) { - return enchs == null ? "disenchant " + item.toString(e, debug) : "enchant " + item.toString(e, debug) + " with " + enchs; + public String toString(@Nullable Event event, boolean debug) { + return enchantments == null ? "disenchant " + items.toString(event, debug) : "enchant " + items.toString(event, debug) + " with " + enchantments; } } From 4529f033d468e4b2f05d13e6a68c6bb202d52fb1 Mon Sep 17 00:00:00 2001 From: Ayham Al Ali <20037329+AyhamAl-Ali@users.noreply.github.com> Date: Wed, 23 Aug 2023 12:15:11 +0300 Subject: [PATCH 2/2] Update src/main/java/ch/njol/skript/effects/EffEnchant.java Co-authored-by: LimeGlass <16087552+TheLimeGlass@users.noreply.github.com> --- src/main/java/ch/njol/skript/effects/EffEnchant.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/effects/EffEnchant.java b/src/main/java/ch/njol/skript/effects/EffEnchant.java index f417f90d4c1..c83012f3423 100644 --- a/src/main/java/ch/njol/skript/effects/EffEnchant.java +++ b/src/main/java/ch/njol/skript/effects/EffEnchant.java @@ -57,8 +57,8 @@ public class EffEnchant extends Effect { @Nullable private Expression enchantments; - @SuppressWarnings({"unchecked", "null"}) @Override + @SuppressWarnings("unchecked") public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) { items = (Expression) exprs[0]; if (!ChangerUtils.acceptsChange(items, ChangeMode.SET, ItemStack.class)) {