diff --git a/src/main/java/dev/ninjdai/werewolf/Main.java b/src/main/java/dev/ninjdai/werewolf/Main.java index e0e5dae..a2d527c 100644 --- a/src/main/java/dev/ninjdai/werewolf/Main.java +++ b/src/main/java/dev/ninjdai/werewolf/Main.java @@ -1,5 +1,6 @@ package dev.ninjdai.werewolf; +import dev.ninjdai.werewolf.uhc.events.UHCPlayerDeathEvent; import io.github.togar2.pvp.MinestomPvP; import io.github.togar2.pvp.feature.CombatFeatureSet; import io.github.togar2.pvp.feature.CombatFeatures; @@ -34,6 +35,8 @@ public class Main { CombatFeatureSet legacyVanilla = CombatFeatures.legacyVanilla(); MinecraftServer.getGlobalEventHandler().addChild(legacyVanilla.createNode()); + UHCPlayerDeathEvent.register(); + minecraftServer.start("0.0.0.0", 30065); } } diff --git a/src/main/java/dev/ninjdai/werewolf/uhc/events/TimedPlayerDeath.java b/src/main/java/dev/ninjdai/werewolf/uhc/events/TimedPlayerDeath.java index ae70301..519fde8 100644 --- a/src/main/java/dev/ninjdai/werewolf/uhc/events/TimedPlayerDeath.java +++ b/src/main/java/dev/ninjdai/werewolf/uhc/events/TimedPlayerDeath.java @@ -10,6 +10,7 @@ import net.minestom.server.entity.Player; import net.minestom.server.entity.damage.Damage; import net.minestom.server.instance.Instance; import net.minestom.server.item.ItemStack; +import net.minestom.server.timer.Task; import net.minestom.server.timer.TaskSchedule; import org.jetbrains.annotations.NotNull; @@ -17,13 +18,18 @@ public class TimedPlayerDeath { private final ItemStack[] inventory; private final Instance instance; private final Player targetPlayer; + private final Task triggerTask; public TimedPlayerDeath(@NotNull Player player, @NotNull Damage damage, int seconds) { this.inventory = player.getInventory().getItemStacks(); this.instance = player.getInstance(); this.targetPlayer = player; - MinecraftServer.getSchedulerManager().scheduleTask(this::trigger, TaskSchedule.seconds(seconds)); + this.triggerTask = MinecraftServer.getSchedulerManager().scheduleTask(this::trigger, TaskSchedule.seconds(seconds)); + } + + public void cancel() { + this.triggerTask.cancel(); } private TaskSchedule trigger(){ diff --git a/src/main/java/dev/ninjdai/werewolf/uhc/events/UHCPlayerDeathEvent.java b/src/main/java/dev/ninjdai/werewolf/uhc/events/UHCPlayerDeathEvent.java index 4f518ee..7378aa7 100644 --- a/src/main/java/dev/ninjdai/werewolf/uhc/events/UHCPlayerDeathEvent.java +++ b/src/main/java/dev/ninjdai/werewolf/uhc/events/UHCPlayerDeathEvent.java @@ -11,7 +11,7 @@ import net.minestom.server.event.EventNode; import net.minestom.server.event.trait.EntityEvent; public class UHCPlayerDeathEvent { - public void onPlayerDeath(EntityPreDeathEvent event) { + public static void onPlayerDeath(EntityPreDeathEvent event) { Player player = (Player) event.getEntity(); if(event.getDamage().getAttacker() instanceof Player killer && !killer.getTag(Team.teamTag).isBlank()) { Team team = Team.teamMap.get(killer.getTag(Team.teamTag)); @@ -21,10 +21,10 @@ public class UHCPlayerDeathEvent { event.setCancelDeath(true); player.setGameMode(GameMode.SPECTATOR); - new TimedPlayerDeath(player, event.getDamage(), 15); + var timedPlayerDeath = new TimedPlayerDeath(player, event.getDamage(), 15); } - public void register() { + public static void register() { EventNode playerNode = EventNode.type("player-listener", EventFilter.ENTITY); MinecraftServer.getGlobalEventHandler().addChild(playerNode);