From 7ed4c20d29abd74eeed2cd277ac2dc39e41e4897 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sat, 8 Feb 2025 21:56:23 +0100 Subject: [PATCH] Update OnPlayerDeath to delay respawning Modified the OnPlayerDeath event to schedule game class application with a 10-second delay after player death instead of immediately applying it. --- src/main/java/com/alttd/ctf/Main.java | 2 +- src/main/java/com/alttd/ctf/events/OnPlayerDeath.java | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/alttd/ctf/Main.java b/src/main/java/com/alttd/ctf/Main.java index d9011f5..1221b21 100644 --- a/src/main/java/com/alttd/ctf/Main.java +++ b/src/main/java/com/alttd/ctf/Main.java @@ -87,7 +87,7 @@ public class Main extends JavaPlugin { PluginManager pluginManager = getServer().getPluginManager(); pluginManager.registerEvents(new SnowballEvent(gameManager), this); pluginManager.registerEvents(new FlagTryCaptureEvent(flag), this); - pluginManager.registerEvents(new OnPlayerDeath(gameManager, worldBorderApi), this); + pluginManager.registerEvents(new OnPlayerDeath(gameManager, worldBorderApi, this), this); pluginManager.registerEvents(new InventoryItemInteractionEvent(), this); pluginManager.registerEvents(new OnPlayerJoin(gameManager, flag), this); pluginManager.registerEvents(new GUIListener(), this); diff --git a/src/main/java/com/alttd/ctf/events/OnPlayerDeath.java b/src/main/java/com/alttd/ctf/events/OnPlayerDeath.java index 848ccde..340e797 100644 --- a/src/main/java/com/alttd/ctf/events/OnPlayerDeath.java +++ b/src/main/java/com/alttd/ctf/events/OnPlayerDeath.java @@ -1,10 +1,12 @@ package com.alttd.ctf.events; +import com.alttd.ctf.Main; import com.alttd.ctf.game.GameManager; import com.alttd.ctf.game.GamePhase; import com.alttd.ctf.team.TeamPlayer; import com.github.yannicklamprecht.worldborder.api.WorldBorderApi; import lombok.extern.slf4j.Slf4j; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -18,10 +20,12 @@ public class OnPlayerDeath implements Listener { private final GameManager gameManager; private final WorldBorderApi worldBorderApi; + private final Main main; - public OnPlayerDeath(GameManager gameManager, WorldBorderApi worldBorderApi) { + public OnPlayerDeath(GameManager gameManager, WorldBorderApi worldBorderApi, Main main) { this.gameManager = gameManager; this.worldBorderApi = worldBorderApi; + this.main = main; } @EventHandler @@ -49,8 +53,8 @@ public class OnPlayerDeath implements Listener { return; } TeamPlayer teamPlayer = optionalTeamPlayer.get(); - event.setRespawnLocation(teamPlayer.getTeam().getSpawnLocation()); - teamPlayer.getGameClass().apply(teamPlayer, worldBorderApi, gamePhase.get(), false); + event.setRespawnLocation(player.getWorld().getSpawnLocation()); + Bukkit.getScheduler().runTaskLater(main, () -> teamPlayer.getGameClass().apply(teamPlayer, worldBorderApi, gamePhase.get(), true), 10 * 20);//10 x 20 ticks aka 10 seconds } }