From d53f9461bff44d912e6b500d5150b7e504e02874 Mon Sep 17 00:00:00 2001 From: Mathieu Strypsteen Date: Sun, 15 Sep 2024 21:32:47 +0200 Subject: [PATCH] Add scheduled task to events --- src/main/java/gent/zeus/mc13dtl/events/Event.java | 12 ++++++++++-- .../gent/zeus/mc13dtl/gamestate/GameStateUtil.java | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/gent/zeus/mc13dtl/events/Event.java b/src/main/java/gent/zeus/mc13dtl/events/Event.java index b2e33e6..430e153 100644 --- a/src/main/java/gent/zeus/mc13dtl/events/Event.java +++ b/src/main/java/gent/zeus/mc13dtl/events/Event.java @@ -7,13 +7,14 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.scoreboard.Team; import gent.zeus.mc13dtl.MC13DTL; - -public abstract class Event implements Listener { +public abstract class Event implements Listener, Runnable { protected Team team; + private int taskId; protected final Difficulty difficulty; public Event(Team team, Difficulty difficulty) { @@ -22,6 +23,8 @@ public abstract class Event implements Listener { MC13DTL.board.sendMessageToTeam(team, Component.text("Difficulty is " + this.difficulty.toString())); MC13DTL.board.sendMessageToTeam(team, Component.text(getMessage()).color(NamedTextColor.GRAY).decorate(TextDecoration.ITALIC)); MC13DTL.instance.getServer().getPluginManager().registerEvents(this, MC13DTL.instance); + BukkitScheduler scheduler = MC13DTL.instance.getServer().getScheduler(); + taskId = scheduler.runTaskTimer(MC13DTL.instance, this, 0, 20).getTaskId(); EventRunner.currentEvents.add(this); if (MC13DTL.board.getPlayers(team).isEmpty()) { eventFailed(); @@ -30,6 +33,7 @@ public abstract class Event implements Listener { private void eventFinished() { HandlerList.unregisterAll(this); + MC13DTL.instance.getServer().getScheduler().cancelTask(taskId); EventRunner.currentEvents.remove(this); } @@ -51,6 +55,10 @@ public abstract class Event implements Listener { } } + @Override + public void run() { + } + protected abstract String getMessage(); protected abstract int scoreAwarded(); diff --git a/src/main/java/gent/zeus/mc13dtl/gamestate/GameStateUtil.java b/src/main/java/gent/zeus/mc13dtl/gamestate/GameStateUtil.java index 9299382..739d05e 100644 --- a/src/main/java/gent/zeus/mc13dtl/gamestate/GameStateUtil.java +++ b/src/main/java/gent/zeus/mc13dtl/gamestate/GameStateUtil.java @@ -38,6 +38,7 @@ public class GameStateUtil { gameState = GameState.PAUSED; break; } + world.setGameRule(GameRule.KEEP_INVENTORY, true); if (gameState == GameState.LOBBY) { world.setDifficulty(Difficulty.PEACEFUL); world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);