From 066b3dc4171210dcbd7b719dd5a376f12182cca0 Mon Sep 17 00:00:00 2001 From: themode Date: Fri, 8 Jan 2021 08:32:33 +0100 Subject: [PATCH] Cleanup --- src/main/java/net/minestom/server/entity/Player.java | 12 ++++++++++-- .../java/net/minestom/server/utils/Position.java | 8 ++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Player.java b/src/main/java/net/minestom/server/entity/Player.java index 52654567c..4e3dc128e 100644 --- a/src/main/java/net/minestom/server/entity/Player.java +++ b/src/main/java/net/minestom/server/entity/Player.java @@ -749,11 +749,19 @@ public class Player extends LivingEntity implements CommandSender { super.setInstance(instance); + // runnable used to send newly visible chunks to player once spawned in the instance + final Runnable refreshRunnable = () -> { + final Chunk chunk = getChunk(); + if (chunk != null) { + refreshVisibleChunks(chunk); + } + }; + if (spawnPosition != null && !position.isSimilar(spawnPosition)) { teleport(spawnPosition, - position.inSameChunk(spawnPosition) ? () -> refreshVisibleChunks(getChunk()) : null); + position.inSameChunk(spawnPosition) ? refreshRunnable : null); } else { - refreshVisibleChunks(getChunk()); + refreshRunnable.run(); } PlayerSpawnEvent spawnEvent = new PlayerSpawnEvent(this, instance, firstSpawn); diff --git a/src/main/java/net/minestom/server/utils/Position.java b/src/main/java/net/minestom/server/utils/Position.java index 88ddfe913..3a79a167b 100644 --- a/src/main/java/net/minestom/server/utils/Position.java +++ b/src/main/java/net/minestom/server/utils/Position.java @@ -264,11 +264,11 @@ public class Position implements PublicCloneable { * @return true if 'this' is in the same chunk as {@code position} */ public boolean inSameChunk(@NotNull Position position) { - final int chunkX1 = ChunkUtils.getChunkCoordinate((int) Math.floor(getX())); - final int chunkZ1 = ChunkUtils.getChunkCoordinate((int) Math.floor(getZ())); + final int chunkX1 = ChunkUtils.getChunkCoordinate((int) getX()); + final int chunkZ1 = ChunkUtils.getChunkCoordinate((int) getZ()); - final int chunkX2 = ChunkUtils.getChunkCoordinate((int) Math.floor(position.getX())); - final int chunkZ2 = ChunkUtils.getChunkCoordinate((int) Math.floor(position.getZ())); + final int chunkX2 = ChunkUtils.getChunkCoordinate((int) position.getX()); + final int chunkZ2 = ChunkUtils.getChunkCoordinate((int) position.getZ()); return chunkX1 == chunkX2 && chunkZ1 == chunkZ2; }