diff --git a/src/main/java/gent/zeus/mc13dtl/MC13DTL.java b/src/main/java/gent/zeus/mc13dtl/MC13DTL.java index 5bccc9b..24c6b99 100644 --- a/src/main/java/gent/zeus/mc13dtl/MC13DTL.java +++ b/src/main/java/gent/zeus/mc13dtl/MC13DTL.java @@ -2,7 +2,9 @@ package gent.zeus.mc13dtl; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scheduler.BukkitScheduler; +import gent.zeus.mc13dtl.events.RandomEventRunner; import gent.zeus.mc13dtl.gamestate.GameStateCommand; import gent.zeus.mc13dtl.gamestate.GameStateHandler; import io.papermc.paper.command.brigadier.Commands; @@ -21,5 +23,7 @@ public class MC13DTL extends JavaPlugin { Commands commands = event.registrar(); commands.register("start-game", "Start a game of 13 days to live", new GameStateCommand()); }); + BukkitScheduler scheduler = this.getServer().getScheduler(); + scheduler.runTaskTimer(this, new RandomEventRunner(), 0, 100); } } diff --git a/src/main/java/gent/zeus/mc13dtl/events/RandomEventExecutor.java b/src/main/java/gent/zeus/mc13dtl/events/RandomEventExecutor.java new file mode 100644 index 0000000..1e3dbe9 --- /dev/null +++ b/src/main/java/gent/zeus/mc13dtl/events/RandomEventExecutor.java @@ -0,0 +1,9 @@ +package gent.zeus.mc13dtl.events; + +import org.bukkit.entity.Player; + +public class RandomEventExecutor { + public static void executeRandomEvent(Player player) { + player.sendMessage("test"); + } +} diff --git a/src/main/java/gent/zeus/mc13dtl/events/RandomEventRunner.java b/src/main/java/gent/zeus/mc13dtl/events/RandomEventRunner.java new file mode 100644 index 0000000..81acc3d --- /dev/null +++ b/src/main/java/gent/zeus/mc13dtl/events/RandomEventRunner.java @@ -0,0 +1,29 @@ +package gent.zeus.mc13dtl.events; + +import org.bukkit.Bukkit; +import org.bukkit.NamespacedKey; +import org.bukkit.OfflinePlayer; +import org.bukkit.World; +import org.bukkit.persistence.PersistentDataType; + +import gent.zeus.mc13dtl.MC13DTL; + +public class RandomEventRunner implements Runnable { + @Override + public void run() { + World world = Bukkit.getWorld("world"); + NamespacedKey eventKey = new NamespacedKey(MC13DTL.instance, "last-event-day"); + long lastRunDay = world.getPersistentDataContainer().get(eventKey, PersistentDataType.LONG); + long day = Bukkit.getWorld("world").getFullTime() / 24000; + if (day > lastRunDay && Bukkit.getWorld("world").getTime() >= 14000) { + for (OfflinePlayer i : Bukkit.getOfflinePlayers()) { + if (i.isOnline()) { + RandomEventExecutor.executeRandomEvent(i.getPlayer()); + } else { + // TODO: Punishment + } + } + world.getPersistentDataContainer().set(eventKey, PersistentDataType.LONG, day); + } + } +} diff --git a/src/main/java/gent/zeus/mc13dtl/gamestate/GameStateUtil.java b/src/main/java/gent/zeus/mc13dtl/gamestate/GameStateUtil.java index 26983bc..1131671 100644 --- a/src/main/java/gent/zeus/mc13dtl/gamestate/GameStateUtil.java +++ b/src/main/java/gent/zeus/mc13dtl/gamestate/GameStateUtil.java @@ -18,6 +18,8 @@ public class GameStateUtil { NamespacedKey key = new NamespacedKey(MC13DTL.instance, "game-state"); if (!world.getPersistentDataContainer().has(key)) { world.getPersistentDataContainer().set(key, PersistentDataType.STRING, "lobby"); + NamespacedKey eventKey = new NamespacedKey(MC13DTL.instance, "last-event-day"); + world.getPersistentDataContainer().set(eventKey, PersistentDataType.LONG, -1L); } String gameState = world.getPersistentDataContainer().get(key, PersistentDataType.STRING); if (gameState.equals("lobby")) {