Add ItemSpawnListener to control item despawn delays based on round phases
This commit is contained in:
parent
897c8ab14d
commit
a7ce376abb
|
|
@ -5,6 +5,7 @@ import com.alttd.hunger_games.config.Config;
|
||||||
import com.alttd.hunger_games.config.LootItems;
|
import com.alttd.hunger_games.config.LootItems;
|
||||||
import com.alttd.hunger_games.config.Messages;
|
import com.alttd.hunger_games.config.Messages;
|
||||||
import com.alttd.hunger_games.event_listeners.ChestListener;
|
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.PlayerDamageListener;
|
||||||
import com.alttd.hunger_games.event_listeners.PlayerDisconnectListener;
|
import com.alttd.hunger_games.event_listeners.PlayerDisconnectListener;
|
||||||
import com.alttd.hunger_games.event_listeners.PlayerJoinListener;
|
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 PlayerJoinListener(playerService), this);
|
||||||
pluginManager.registerEvents(new PlayerDamageListener(roundService, playerService, statService), this);
|
pluginManager.registerEvents(new PlayerDamageListener(roundService, playerService, statService), this);
|
||||||
pluginManager.registerEvents(new ChestListener(roundService, lootService), this);
|
pluginManager.registerEvents(new ChestListener(roundService, lootService), this);
|
||||||
|
pluginManager.registerEvents(new ItemSpawnListener(roundService), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reloadConfigs() {
|
public void reloadConfigs() {
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user