From dc93ba6e7ef000d626873a5d2fec2dc132fd4b5c Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sun, 1 Oct 2023 21:45:25 +0200 Subject: [PATCH] Auto despawn fish that players don't pick up after 60 seconds --- .../fishingevent/listeners/CatchFish.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/alttd/fishingevent/listeners/CatchFish.java b/src/main/java/com/alttd/fishingevent/listeners/CatchFish.java index 9793c34..52445b4 100644 --- a/src/main/java/com/alttd/fishingevent/listeners/CatchFish.java +++ b/src/main/java/com/alttd/fishingevent/listeners/CatchFish.java @@ -162,7 +162,17 @@ public class CatchFish implements Listener { return; CaughtFishData caughtFishData = optionalFishData.get(); player.getInventory().addItem(caughtFishData.fishItem()).values() - .forEach(item -> player.getWorld().dropItem(player.getLocation(), item).setOwner(player.getUniqueId())); + .forEach(item -> { + Item dropItem = player.getWorld().dropItem(player.getLocation(), item); + dropItem.setOwner(player.getUniqueId()); + new BukkitRunnable() { + @Override + public void run() { + if (!dropItem.isDead()) + dropItem.remove(); + } + }.runTaskLater(fishingEvent, 60 * 20); + }); player.updateInventory(); player.getWorld().spawn(player.getLocation(), ExperienceOrb.class).setExperience(10); ScoreboardManager.getInstance().updateScoreboard(player, caughtFishData.length(), caughtFishData.fish()); @@ -194,6 +204,13 @@ public class CatchFish implements Listener { CaughtFishData caughtFishData = optionalFishData.get(); item.setItemStack(caughtFishData.fishItem()); item.setOwner(player.getUniqueId()); + new BukkitRunnable() { + @Override + public void run() { + if (!item.isDead()) + item.remove(); + } + }.runTaskLater(fishingEvent, 60 * 20); ScoreboardManager.getInstance().updateScoreboard(player, caughtFishData.length(), caughtFishData.fish()); player.sendActionBar(MiniMessage.miniMessage().deserialize("You caught a cm", //TODO move to config TagResolver.resolver(