|
1 | 1 | package fr.bakaaless.inventory; |
2 | 2 |
|
3 | | -import org.bukkit.Bukkit; |
| 3 | +import org.bukkit.Material; |
4 | 4 | import org.bukkit.entity.Player; |
5 | 5 | import org.bukkit.event.EventHandler; |
6 | 6 | import org.bukkit.event.HandlerList; |
|
15 | 15 | import java.util.Iterator; |
16 | 16 | import java.util.List; |
17 | 17 | import java.util.Optional; |
| 18 | +import java.util.concurrent.atomic.AtomicBoolean; |
18 | 19 | import java.util.function.Consumer; |
19 | 20 | import java.util.function.Function; |
20 | 21 | import java.util.logging.Level; |
@@ -472,14 +473,22 @@ public void onInteract(final InventoryClickEvent e) { |
472 | 473 | if (!e.getClickedInventory().equals(this.inventory)) |
473 | 474 | return; |
474 | 475 | e.setCancelled(this.interactionCancel); |
| 476 | + final AtomicBoolean slotRegister = new AtomicBoolean(false); |
475 | 477 | this.items.forEach(itemAPI -> { |
476 | 478 | if (e.getSlot() != itemAPI.getSlot()) |
477 | 479 | return; |
| 480 | + slotRegister.set(true); |
478 | 481 | if (e.getCurrentItem() == null) |
479 | 482 | return; |
480 | 483 | e.setCancelled(itemAPI.isCancelled()); |
481 | 484 | itemAPI.getConsumer().accept(e); |
482 | 485 | }); |
| 486 | + if (!slotRegister.get()) { |
| 487 | + if (e.getInventory().getItem(e.getSlot()) == null || e.getInventory().getItem(e.getSlot()).getType() == Material.AIR) |
| 488 | + this.clearSlot(e.getSlot()); |
| 489 | + else |
| 490 | + this.addItem(e.getSlot(), e.getInventory().getItem(e.getSlot()), false); |
| 491 | + } |
483 | 492 | } |
484 | 493 |
|
485 | 494 | @EventHandler |
|
0 commit comments