diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/altar/AncientPedestal.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/altar/AncientPedestal.java index 52e64fcff..99a7b1558 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/altar/AncientPedestal.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/altar/AncientPedestal.java @@ -94,7 +94,7 @@ public class AncientPedestal extends SimpleSlimefunItem im public @Nonnull Optional getPlacedItem(@Nonnull Block pedestal) { Location l = pedestal.getLocation().add(0.5, 1.2, 0.5); - for (Entity n : l.getWorld().getNearbyEntities(l, 0.5, 0.5, 0.5, this::testItem)) { + for (Entity n : l.getWorld().getNearbyEntities(l, 0.5, 0.5, 0.5, AncientPedestal::testItem)) { if (n instanceof Item item) { return Optional.of(item); } @@ -120,7 +120,7 @@ public class AncientPedestal extends SimpleSlimefunItem im return createIfNoneExists ? ArmorStandUtils.spawnArmorStand(l) : null; } - private boolean testItem(@Nullable Entity n) { + public static boolean testItem(@Nullable Entity n) { if (n instanceof Item item && n.isValid()) { ItemMeta meta = item.getItemStack().getItemMeta(); @@ -172,7 +172,6 @@ public class AncientPedestal extends SimpleSlimefunItem im if (entity != null) { ArmorStand armorStand = getArmorStand(b, true); entity.setInvulnerable(true); - entity.setUnlimitedLifetime(true); entity.setVelocity(new Vector(0, 0.1, 0)); entity.setCustomNameVisible(true); entity.setCustomName(nametag); 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 1944b2b09..c7e8258d7 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 @@ -24,6 +24,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.entity.ItemDespawnEvent; import org.bukkit.inventory.ItemStack; import io.github.bakedlibs.dough.items.CustomItemStack; @@ -357,4 +358,11 @@ public class AncientAltarListener implements Listener { return Optional.empty(); } + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onItemDespawn(ItemDespawnEvent e) { + if (AncientPedestal.testItem(e.getEntity())) { + e.setCancelled(true); + } + } + }