diff --git a/src/main/java/gent/zeus/mc13dtl/events/EventRunner.java b/src/main/java/gent/zeus/mc13dtl/events/EventRunner.java index 11c05ad..0993711 100644 --- a/src/main/java/gent/zeus/mc13dtl/events/EventRunner.java +++ b/src/main/java/gent/zeus/mc13dtl/events/EventRunner.java @@ -15,7 +15,7 @@ import gent.zeus.mc13dtl.MC13DTL; public class EventRunner implements Runnable { static List currentEvents = new ArrayList<>(); - public static List startTimes = List.of(5000, 13000, 1000, 13000, 100, 1000, 500, 10000, 100); + public static List startTimes = List.of(5000, 13000, 1000, 13000, 100, 1000, 500, 10000, 5000, 100); private long day; @@ -48,7 +48,8 @@ public class EventRunner implements Runnable { case 5 -> new KillPlayerEvent(team, difficulty, getDayScore()); case 6 -> new StructureEvent(team, difficulty, getDayScore()); case 7 -> new KillSurvivingTeamEvent(team, difficulty, getDayScore()); - case 8 -> new EndEvent(team, difficulty, getDayScore()); // TODO: Move to last day + case 8 -> new KillSurvivingTeamEvent(team, difficulty, getDayScore()); + case 9 -> new EndEvent(team, difficulty, getDayScore()); // TODO: Move to last day default -> throw new IllegalStateException("Unexpected day: " + (int) day); }; event.start(); diff --git a/src/main/java/gent/zeus/mc13dtl/events/catalog/KillMobs2Event.java b/src/main/java/gent/zeus/mc13dtl/events/catalog/KillMobs2Event.java new file mode 100644 index 0000000..5c6fdd4 --- /dev/null +++ b/src/main/java/gent/zeus/mc13dtl/events/catalog/KillMobs2Event.java @@ -0,0 +1,49 @@ +package gent.zeus.mc13dtl.events.catalog; + +import com.mojang.datafixers.util.Pair; +import gent.zeus.mc13dtl.MC13DTL; +import gent.zeus.mc13dtl.events.Difficulty; +import gent.zeus.mc13dtl.events.Event; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import org.bukkit.entity.EntityType; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityDeathEvent; +import org.bukkit.scoreboard.Team; + +import java.util.Map; + +public class KillMobs2Event extends Event { + + private int killsLeft; + private final EntityType monster; + + public KillMobs2Event(Team team, Difficulty difficulty, int scoreOnSuccess) { + super(team, difficulty, scoreOnSuccess); + Map> monsters = Map.of( + Difficulty.BABY, new Pair<>(EntityType.CREEPER, 3), + Difficulty.EASY, new Pair<>(EntityType.PIGLIN, 3), + Difficulty.MEDIUM, new Pair<>(EntityType.GHAST, 2), + Difficulty.HARD, new Pair<>(EntityType.BLAZE, 3), + Difficulty.IMPOSSIBLE, new Pair<>(EntityType.WITHER, 1)); + monster = monsters.get(difficulty).getFirst(); + killsLeft = monsters.get(difficulty).getSecond(); + } + + @EventHandler + public void onEntityDeath(EntityDeathEvent event) { + if (event.getEntity().getType() == monster && MC13DTL.board.getPlayers(team).contains(event.getDamageSource().getCausingEntity())) { + killsLeft--; + if (killsLeft == 0) { + eventSuccess(); + } else { + MC13DTL.board.sendMessageToTeam(team, Component.text(killsLeft + " left.").color(NamedTextColor.BLUE)); + } + } + } + + @Override + protected String getMessage() { + return "Your team has to kill " + killsLeft + " " + monster.toString() + " before dawn"; + } +}