diff --git a/src/main/java/gent/zeus/mc13dtl/events/Event.java b/src/main/java/gent/zeus/mc13dtl/events/Event.java index 164c8cd..fc1f02b 100644 --- a/src/main/java/gent/zeus/mc13dtl/events/Event.java +++ b/src/main/java/gent/zeus/mc13dtl/events/Event.java @@ -3,8 +3,6 @@ package gent.zeus.mc13dtl.events; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextDecoration; -import org.bukkit.Bukkit; -import org.bukkit.Server; import org.bukkit.event.EventHandler; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; diff --git a/src/main/java/gent/zeus/mc13dtl/events/EventRunner.java b/src/main/java/gent/zeus/mc13dtl/events/EventRunner.java index f60ad64..ef97157 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, 1000, 500, 10000); + public static List startTimes = List.of(5000, 13000, 1000, 13000, 100, 1000, 500, 10000); private long day; @@ -44,9 +44,10 @@ public class EventRunner implements Runnable { case 1 -> new KillMobs1Event(team, difficulty, getDayScore()); case 2 -> new CraftEvent(team, difficulty, getDayScore()); case 3 -> new ClimbEvent(team, difficulty, getDayScore()); - case 4 -> new KillPlayerEvent(team, difficulty, getDayScore()); - case 5 -> new StructureEvent(team, difficulty, getDayScore()); - case 6 -> new KillSurvivingTeamEvent(team, difficulty, getDayScore()); + case 4 -> new FallEvent(team, difficulty, getDayScore()); + case 5 -> new KillPlayerEvent(team, difficulty, getDayScore()); + case 6 -> new StructureEvent(team, difficulty, getDayScore()); + case 7 -> new KillSurvivingTeamEvent(team, difficulty, getDayScore()); default -> throw new IllegalStateException("Unexpected day: " + (int) day); }; event.start(); diff --git a/src/main/java/gent/zeus/mc13dtl/events/catalog/ClimbEvent.java b/src/main/java/gent/zeus/mc13dtl/events/catalog/ClimbEvent.java index f5ef9e7..cd2c2fe 100644 --- a/src/main/java/gent/zeus/mc13dtl/events/catalog/ClimbEvent.java +++ b/src/main/java/gent/zeus/mc13dtl/events/catalog/ClimbEvent.java @@ -31,7 +31,6 @@ public class ClimbEvent extends Event { return; } Player player = MC13DTL.board.getPlayers(team).getFirst(); - player.getLocation().x(); Location location = new Location(Bukkit.getWorld("world"), player.getX(), -50, player.getZ()); location.getBlock().setType(Material.AIR); location.add(0, -1, 0).getBlock().setType(Material.AIR); diff --git a/src/main/java/gent/zeus/mc13dtl/events/catalog/FallEvent.java b/src/main/java/gent/zeus/mc13dtl/events/catalog/FallEvent.java new file mode 100644 index 0000000..4dedef1 --- /dev/null +++ b/src/main/java/gent/zeus/mc13dtl/events/catalog/FallEvent.java @@ -0,0 +1,61 @@ +package gent.zeus.mc13dtl.events.catalog; + +import gent.zeus.mc13dtl.MC13DTL; +import gent.zeus.mc13dtl.events.Difficulty; +import gent.zeus.mc13dtl.events.Event; +import org.bukkit.inventory.ItemStack; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.entity.Player; +import org.bukkit.scoreboard.Team; + +public class FallEvent extends Event { + + private final int extraHeight; + + public FallEvent(Team team, Difficulty difficulty, int scoreOnSuccess) { + super(team, difficulty, scoreOnSuccess); + extraHeight = switch (difficulty) { + case BABY -> 20; + case EASY -> 35; + case MEDIUM -> 50; + case HARD -> 75; + case SWEAT -> 100; + case IMPOSSIBLE -> 200; + }; + } + + @Override + public void start() { + if (MC13DTL.board.getPlayers(team).size() == 0) { + return; + } + Player player = MC13DTL.board.getPlayers(team).getFirst(); + Location location = player.getLocation(); + World world = player.getWorld(); + location.setY(300); + while (location.y() > 50 && world.getBlockAt(location).getType() == Material.AIR) { + location.setY(location.getY() - 1); + } + int blocksToIncrease = extraHeight; + while (location.y() < 315 && blocksToIncrease > 0) { + location.setY(location.getY() + 1); + blocksToIncrease--; + } + location.getBlock().setType(Material.STONE); + location.setY(location.getY() + 1); + for (Player p : MC13DTL.board.getPlayers(team)) { + p.teleport(location); + p.getInventory().addItem(new ItemStack(Material.WATER_BUCKET)); + } + + super.start(); + } + + @Override + protected String getMessage() { + return "And now you should get down again... safely"; + } +} diff --git a/src/main/java/gent/zeus/mc13dtl/events/catalog/KillSurvivingTeamEvent.java b/src/main/java/gent/zeus/mc13dtl/events/catalog/KillSurvivingTeamEvent.java index 2d8e55c..256d388 100644 --- a/src/main/java/gent/zeus/mc13dtl/events/catalog/KillSurvivingTeamEvent.java +++ b/src/main/java/gent/zeus/mc13dtl/events/catalog/KillSurvivingTeamEvent.java @@ -3,9 +3,6 @@ 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 net.kyori.adventure.text.format.NamedTextColor; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerQuitEvent; @@ -20,8 +17,7 @@ public class KillSurvivingTeamEvent extends Event { for (Team t : MC13DTL.board.getTeams()) { if (!MC13DTL.board.getPlayers(t).isEmpty() - && (huntingTeam == null || MC13DTL.board.getDaysAlive(t) > MC13DTL.board.getDaysAlive(huntingTeam) - )) { + && (huntingTeam == null || MC13DTL.board.getDaysAlive(t) > MC13DTL.board.getDaysAlive(huntingTeam))) { huntingTeam = t; } }