This also fixes a related issue where changes to the region were not
being sent on login.
This commit is contained in:
Major-
2016-02-11 16:12:52 +00:00
parent 4b744e5e86
commit 774e7f9fef
@@ -58,13 +58,18 @@ public final class PrePlayerSynchronizationTask extends SynchronizationTask {
Position old = player.getPosition(); Position old = player.getPosition();
player.getWalkingQueue().pulse(); player.getWalkingQueue().pulse();
boolean local = true;
if (player.isTeleporting()) { if (player.isTeleporting()) {
player.resetViewingDistance(); player.resetViewingDistance();
local = false;
} }
Position position = player.getPosition(); Position position = player.getPosition();
if (!player.hasLastKnownRegion() || isRegionUpdateRequired()) { if (!player.hasLastKnownRegion() || isRegionUpdateRequired()) {
player.setRegionChanged(true); player.setRegionChanged(true);
local = false;
player.setLastKnownRegion(position); player.setLastKnownRegion(position);
player.send(new RegionChangeMessage(position)); player.send(new RegionChangeMessage(position));
@@ -78,7 +83,9 @@ public final class PrePlayerSynchronizationTask extends SynchronizationTask {
differences.retainAll(oldViewable); differences.retainAll(oldViewable);
Set<RegionCoordinates> full = new HashSet<>(newViewable); Set<RegionCoordinates> full = new HashSet<>(newViewable);
if (local) {
full.removeAll(oldViewable); full.removeAll(oldViewable);
}
sendUpdates(player.getLastKnownRegion(), differences, full); sendUpdates(player.getLastKnownRegion(), differences, full);
} }