Skip to content

Commit 84772b6

Browse files
authored
Fix event-itemstack for ComplexRecipe (#7674)
* Fix event-itemstack for ComplexRecipe * Fix inventoryClickedEvent with complexRecipe events * Fix indendation of line 156 of EvtItem.java
1 parent c1c24f0 commit 84772b6

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -402,11 +402,7 @@ else if (hand == EquipmentSlot.OFF_HAND)
402402
EventValues.registerEventValue(InventoryClickEvent.class, Player.class,
403403
event -> event.getWhoClicked() instanceof Player player ? player : null);
404404
EventValues.registerEventValue(InventoryClickEvent.class, World.class, event -> event.getWhoClicked().getWorld());
405-
EventValues.registerEventValue(InventoryClickEvent.class, ItemStack.class, event -> {
406-
if (event instanceof CraftItemEvent craftItemEvent)
407-
return craftItemEvent.getRecipe().getResult();
408-
return event.getCurrentItem();
409-
});
405+
EventValues.registerEventValue(InventoryClickEvent.class, ItemStack.class, InventoryClickEvent::getCurrentItem);
410406
EventValues.registerEventValue(InventoryClickEvent.class, Slot.class, event -> {
411407
Inventory invi = event.getClickedInventory(); // getInventory is WRONG and dangerous
412408
if (invi == null)
@@ -496,7 +492,12 @@ else if (hand == EquipmentSlot.OFF_HAND)
496492
return null;
497493
});
498494
// CraftItemEvent
499-
EventValues.registerEventValue(CraftItemEvent.class, ItemStack.class, event -> event.getRecipe().getResult());
495+
EventValues.registerEventValue(CraftItemEvent.class, ItemStack.class, event -> {
496+
Recipe recipe = event.getRecipe();
497+
if (recipe instanceof ComplexRecipe)
498+
return event.getCurrentItem();
499+
return recipe.getResult();
500+
});
500501
//InventoryEvent
501502
EventValues.registerEventValue(InventoryEvent.class, Inventory.class, InventoryEvent::getInventory);
502503
//InventoryOpenEvent

src/main/java/ch/njol/skript/events/EvtItem.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.bukkit.event.player.PlayerDropItemEvent;
1616
import org.bukkit.event.player.PlayerItemConsumeEvent;
1717
import org.bukkit.event.player.PlayerPickupItemEvent;
18+
import org.bukkit.inventory.ComplexRecipe;
1819
import org.bukkit.inventory.ItemStack;
1920
import org.bukkit.inventory.Recipe;
2021
import org.jetbrains.annotations.Nullable;
@@ -161,7 +162,12 @@ public boolean check(final Event event) {
161162
} else if (event instanceof EntityDropItemEvent entityDropItemEvent) {
162163
itemStack = entityDropItemEvent.getItemDrop().getItemStack();
163164
} else if (event instanceof CraftItemEvent craftItemEvent) {
164-
itemStack = craftItemEvent.getRecipe().getResult();
165+
Recipe recipe = craftItemEvent.getRecipe();
166+
if (recipe instanceof ComplexRecipe) {
167+
itemStack = craftItemEvent.getCurrentItem();
168+
} else {
169+
itemStack = recipe.getResult();
170+
}
165171
} else if (event instanceof PrepareItemCraftEvent prepareItemCraftEvent) {
166172
Recipe recipe = prepareItemCraftEvent.getRecipe();
167173
if (recipe != null) {

0 commit comments

Comments
 (0)