diff --git a/Server/src/main/core/game/system/command/sets/DevelopmentCommandSet.kt b/Server/src/main/core/game/system/command/sets/DevelopmentCommandSet.kt index 780319bc3..dc2fb3159 100644 --- a/Server/src/main/core/game/system/command/sets/DevelopmentCommandSet.kt +++ b/Server/src/main/core/game/system/command/sets/DevelopmentCommandSet.kt @@ -385,14 +385,14 @@ class DevelopmentCommandSet : CommandSet(Privilege.ADMIN) { sendMessage(player, "${player.location.chunk.players.size} players and ${player.location.chunk.npcs.size} npcs on this chunk.") sendMessage(player, "Entities on this tile:") for (p in RegionManager.getLocalPlayers(player.location, 0)) { - sendMessage(p, " player ${player.username}") + sendMessage(player, " player ${player.username}") } for (npc in RegionManager.getLocalNPCs(player.location, 0)) { sendMessage(player, " npc ${npc.name}") } sendMessage(player, "Entities within render distance:") for (p in RegionManager.getLocalPlayers(player.location)) { - sendMessage(p, " player ${player.username} at ${player.location}") + sendMessage(player, " player ${player.username} at ${player.location}") } for (npc in RegionManager.getLocalNPCs(player.location)) { sendMessage(player, " npc ${npc.name} at ${npc.location}}") diff --git a/Server/src/main/core/game/world/map/RegionChunk.java b/Server/src/main/core/game/world/map/RegionChunk.java index 385d7a705..3a5986abe 100644 --- a/Server/src/main/core/game/world/map/RegionChunk.java +++ b/Server/src/main/core/game/world/map/RegionChunk.java @@ -250,7 +250,6 @@ public class RegionChunk { public void addPlayer(Player player) { players.add(player); Region region = getCurrentBase().getRegion(); - region.getTolerances().put(player.getName(), System.currentTimeMillis()); region.flagActive(); } @@ -284,7 +283,6 @@ public class RegionChunk { public void removePlayer(Player player) { players.remove(player); Region region = getCurrentBase().getRegion(); - region.getTolerances().remove(player.getName()); region.checkInactive(); } diff --git a/Server/src/main/core/game/world/map/RegionManager.kt b/Server/src/main/core/game/world/map/RegionManager.kt index 16c0deccd..07f602ae5 100644 --- a/Server/src/main/core/game/world/map/RegionManager.kt +++ b/Server/src/main/core/game/world/map/RegionManager.kt @@ -382,12 +382,21 @@ object RegionManager { if (src?.chunk != dst.chunk) { when (entity) { is Player -> { - if (src != null) { - src.chunk.removePlayer(entity) - src.region.decrementViewAmount() + val player = entity.asPlayer() + val sameRegion = src?.region == dst.region + if (src != null && sameRegion) { + src.chunk.removePlayer(player) + dst.chunk.addPlayer(player) + } else { + if (src != null) { + src.chunk.removePlayer(player) + src.region.tolerances.remove(player.name) + src.region.decrementViewAmount() + } + dst.chunk.addPlayer(entity) + dst.region.tolerances[entity.asPlayer().name] = System.currentTimeMillis() + dst.region.incrementViewAmount() } - dst.chunk.addPlayer(entity) - dst.region.incrementViewAmount() } is NPC -> { if (src != null) { @@ -395,9 +404,7 @@ object RegionManager { } dst.chunk.add(entity) } - else -> { - throw (IllegalStateException("Tried to move an Entity that was neither Player nor NPC")) - } + else -> throw IllegalStateException("Tried to move an Entity that was neither Player nor NPC") } } entity.zoneMonitor.updateLocation(entity.walkingQueue.footPrint)