From 518b89a763b5ee36006c1d5ef6c4548c878e6638 Mon Sep 17 00:00:00 2001 From: emortal Date: Fri, 1 Sep 2023 04:39:58 +0100 Subject: [PATCH] Improve fire+lava check --- .../battle/listeners/ChestListener.java | 2 +- .../battle/listeners/PVPListener.java | 36 +++---------------- 2 files changed, 6 insertions(+), 32 deletions(-) diff --git a/src/main/java/dev/emortal/minestom/battle/listeners/ChestListener.java b/src/main/java/dev/emortal/minestom/battle/listeners/ChestListener.java index 4ba15ca..b57c707 100644 --- a/src/main/java/dev/emortal/minestom/battle/listeners/ChestListener.java +++ b/src/main/java/dev/emortal/minestom/battle/listeners/ChestListener.java @@ -28,7 +28,7 @@ public class ChestListener { - private static TaskSchedule CHEST_REFILL_INTERVAL = TaskSchedule.seconds(80); + private static final TaskSchedule CHEST_REFILL_INTERVAL = TaskSchedule.seconds(80); public static void registerListener(EventNode eventNode, BattleGame game) { Set chests = new HashSet<>(); diff --git a/src/main/java/dev/emortal/minestom/battle/listeners/PVPListener.java b/src/main/java/dev/emortal/minestom/battle/listeners/PVPListener.java index 1fe0823..d48519b 100644 --- a/src/main/java/dev/emortal/minestom/battle/listeners/PVPListener.java +++ b/src/main/java/dev/emortal/minestom/battle/listeners/PVPListener.java @@ -13,7 +13,6 @@ import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.title.Title; import net.minestom.server.coordinate.Point; -import net.minestom.server.coordinate.Vec; import net.minestom.server.entity.GameMode; import net.minestom.server.entity.Player; import net.minestom.server.entity.damage.DamageType; @@ -28,8 +27,7 @@ import org.jetbrains.annotations.Nullable; import java.time.Duration; -import java.util.HashSet; -import java.util.Set; +import java.util.Iterator; import static net.kyori.adventure.title.Title.DEFAULT_TIMES; @@ -92,13 +90,11 @@ public static void registerListener(EventNode eventNode, BattleGa // } // } - Set blocksInHitbox = getPointsBetween( - e.getPlayer().getBoundingBox().relativeStart().add(e.getPlayer().getPosition()), - e.getPlayer().getBoundingBox().relativeEnd().add(e.getPlayer().getPosition()) - ); - for (Point pos : blocksInHitbox) { - Block block = e.getInstance().getBlock(pos, Block.Getter.Condition.TYPE); + Iterator blocksInHitbox = e.getPlayer().getBoundingBox().getBlocks(e.getPlayer().getPosition()); + + while (blocksInHitbox.hasNext()) { + Block block = e.getInstance().getBlock(blocksInHitbox.next(), Block.Getter.Condition.TYPE); // TODO: Could probably be cleaner if (block.compare(Block.WATER)) { @@ -184,26 +180,4 @@ public static void playerDied(BattleGame game, Player player, @Nullable Player k } - - private static Set getPointsBetween(Point a, Point b) { - Set points = new HashSet<>(); - - int minX = Math.min(a.blockX(), b.blockX()); - int maxX = Math.max(a.blockX(), b.blockX()); - int minY = Math.min(a.blockY(), b.blockY()); - int maxY = Math.max(a.blockY(), b.blockY()); - int minZ = Math.min(a.blockZ(), b.blockZ()); - int maxZ = Math.max(a.blockZ(), b.blockZ()); - - for (int x = minX; x <= maxX; x++) { - for (int y = minY; y <= maxY; y++) { - for (int z = minZ; z <= maxZ; z++) { - points.add(new Vec(x, y, z)); - } - } - } - - return points; - } - }