diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/AncientAltarListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/AncientAltarListener.java index 7c2a865a0..4187d19b6 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/AncientAltarListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/AncientAltarListener.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Optional; import java.util.Set; import java.util.UUID; +import java.util.Map; import javax.annotation.Nonnull; import javax.annotation.ParametersAreNonnullByDefault; @@ -115,7 +116,7 @@ public class AncientAltarListener implements Listener { return; } - // Make altarinuse simply because that was the last block clicked. + // Make altar in use simply because that was the last block clicked. altarsInUse.add(b.getLocation()); e.cancel(); @@ -156,8 +157,18 @@ public class AncientAltarListener implements Listener { Slimefun.runSync(() -> removedItems.remove(uuid), 30L); entity.remove(); - p.getInventory().addItem(pedestalItem.getOriginalItemStack(entity)); p.playSound(pedestal.getLocation(), Sound.ENTITY_ITEM_PICKUP, 1F, 1F); + + /* + * Fixes #3476 + * Drop the item instead if the player's inventory is full and + * no stack space left else add remaining items from the returned map value + */ + Map remainingItemMap = p.getInventory().addItem(pedestalItem.getOriginalItemStack(entity)); + + for (ItemStack item : remainingItemMap.values()) { + p.getWorld().dropItem(pedestal.getLocation().add(0, 1, 0), item.clone()); + } } }