diff --git a/src/main/java/com/alttd/hunger_games/Main.java b/src/main/java/com/alttd/hunger_games/Main.java index e97702e..3f2bddc 100644 --- a/src/main/java/com/alttd/hunger_games/Main.java +++ b/src/main/java/com/alttd/hunger_games/Main.java @@ -5,6 +5,7 @@ import com.alttd.hunger_games.config.Config; import com.alttd.hunger_games.config.LootItems; import com.alttd.hunger_games.config.Messages; import com.alttd.hunger_games.event_listeners.ChestListener; +import com.alttd.hunger_games.event_listeners.ItemSpawnListener; import com.alttd.hunger_games.event_listeners.PlayerDamageListener; import com.alttd.hunger_games.event_listeners.PlayerDisconnectListener; import com.alttd.hunger_games.event_listeners.PlayerJoinListener; @@ -62,6 +63,7 @@ public final class Main extends JavaPlugin { pluginManager.registerEvents(new PlayerJoinListener(playerService), this); pluginManager.registerEvents(new PlayerDamageListener(roundService, playerService, statService), this); pluginManager.registerEvents(new ChestListener(roundService, lootService), this); + pluginManager.registerEvents(new ItemSpawnListener(roundService), this); } public void reloadConfigs() { diff --git a/src/main/java/com/alttd/hunger_games/event_listeners/ItemSpawnListener.java b/src/main/java/com/alttd/hunger_games/event_listeners/ItemSpawnListener.java new file mode 100644 index 0000000..8af23b1 --- /dev/null +++ b/src/main/java/com/alttd/hunger_games/event_listeners/ItemSpawnListener.java @@ -0,0 +1,34 @@ +package com.alttd.hunger_games.event_listeners; + +import com.alttd.hunger_games.data_objects.ROUND_STATE; +import com.alttd.hunger_games.services.RoundService; +import lombok.RequiredArgsConstructor; +import org.bukkit.entity.Item; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.ItemSpawnEvent; +import org.bukkit.event.player.PlayerDropItemEvent; + +@RequiredArgsConstructor +public class ItemSpawnListener implements Listener { + + private final RoundService roundService; + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onItemSpawn(ItemSpawnEvent event) { + setDespawnDelay(event.getEntity()); + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onPlayerDropItem(PlayerDropItemEvent event) { + setDespawnDelay(event.getItemDrop()); + } + + private void setDespawnDelay(Item item) { + ROUND_STATE roundState = roundService.getRoundState(); + if (roundState == ROUND_STATE.SAFE_PHASE || roundState == ROUND_STATE.KILL_PHASE || roundState == ROUND_STATE.FINALE) { + item.setTicksLived(5800); + } + } +}