diff --git a/src/main/java/gent/zeus/mc13dtl/MC13DTL.java b/src/main/java/gent/zeus/mc13dtl/MC13DTL.java index ff9aa67..c5cbfa7 100644 --- a/src/main/java/gent/zeus/mc13dtl/MC13DTL.java +++ b/src/main/java/gent/zeus/mc13dtl/MC13DTL.java @@ -36,6 +36,6 @@ public class MC13DTL extends JavaPlugin { scheduler.runTask(this, () -> { board = new TeamScoreBoard(); }); - scheduler.runTaskTimer(this, new EventRunner(), 0, 100); + scheduler.runTaskTimer(this, new EventRunner(), 0, 200); } } diff --git a/src/main/java/gent/zeus/mc13dtl/events/EventRunner.java b/src/main/java/gent/zeus/mc13dtl/events/EventRunner.java index e4aa46f..fcc835c 100644 --- a/src/main/java/gent/zeus/mc13dtl/events/EventRunner.java +++ b/src/main/java/gent/zeus/mc13dtl/events/EventRunner.java @@ -1,5 +1,6 @@ package gent.zeus.mc13dtl.events; +import gent.zeus.mc13dtl.events.catalog.SuicideEvent; import org.bukkit.Bukkit; import org.bukkit.NamespacedKey; import org.bukkit.World; @@ -39,8 +40,9 @@ public class EventRunner implements Runnable { Team team = teams.get(i); Difficulty difficulty = difficulties.get(i); switch ((int) day) { - case 0 -> new TestEvent(team, difficulty, getDayScore()); - case 1 -> new TestEvent2(team, difficulty, getDayScore()); + case 0 -> new SuicideEvent(team, difficulty, getDayScore()); + case 1 -> new TestEvent(team, difficulty, getDayScore()); + case 2 -> new TestEvent2(team, difficulty, getDayScore()); } } world.getPersistentDataContainer().set(eventKey, PersistentDataType.LONG, day); diff --git a/src/main/java/gent/zeus/mc13dtl/events/catalog/SuicideEvent.java b/src/main/java/gent/zeus/mc13dtl/events/catalog/SuicideEvent.java new file mode 100644 index 0000000..69da48c --- /dev/null +++ b/src/main/java/gent/zeus/mc13dtl/events/catalog/SuicideEvent.java @@ -0,0 +1,45 @@ +package gent.zeus.mc13dtl.events.catalog; + +import gent.zeus.mc13dtl.MC13DTL; +import gent.zeus.mc13dtl.events.Difficulty; +import gent.zeus.mc13dtl.events.Event; +import net.kyori.adventure.text.Component; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.scoreboard.Team; + + +public class SuicideEvent extends Event { + // Time left for team member to commit suicide in seconds. + private long timeLeft; + + public SuicideEvent(Team team, Difficulty difficulty, int scoreOnSuccess) { + super(team, difficulty, scoreOnSuccess); + + timeLeft = ((Difficulty.IMPOSSIBLE.ordinal() + 1) - difficulty.ordinal()) * 10; + } + + @Override + public void run() { + timeLeft--; + if (timeLeft <= 0) { + eventFailed(); + } else { + MC13DTL.board.sendMessageToTeam(this.team, Component.text(timeLeft + " seconds left.")); + } + } + + @Override + protected String getMessage() { + return "A team member has to die within " + timeLeft + " seconds."; + } + + @Override + @EventHandler + public void onPlayerDeath(PlayerDeathEvent event) { + if (MC13DTL.board.getPlayers(team).contains(event.getPlayer())) { + eventSuccess(); + } + } +}