Don't call chunkmap status updates if the playerlist wasn't modified
This commit is contained in:
parent
15ee73f944
commit
7a229def7d
|
@ -347,11 +347,17 @@ public class NMSImpl implements NMSBridge {
|
||||||
EntityPlayer handle = (EntityPlayer) getHandle(entity);
|
EntityPlayer handle = (EntityPlayer) getHandle(entity);
|
||||||
if (handle.world == null)
|
if (handle.world == null)
|
||||||
return;
|
return;
|
||||||
if (remove) {
|
List<? extends EntityHuman> players = handle.world.getPlayers();
|
||||||
handle.world.getPlayers().remove(handle);
|
boolean changed = false;
|
||||||
} else if (!handle.world.getPlayers().contains(handle)) {
|
if (remove && players.contains(handle)) {
|
||||||
((List) handle.world.getPlayers()).add(handle);
|
players.remove(handle);
|
||||||
|
changed = true;
|
||||||
|
} else if (!remove && !players.contains(handle)) {
|
||||||
|
((List) players).add(handle);
|
||||||
|
changed = true;
|
||||||
}
|
}
|
||||||
|
if (!changed)
|
||||||
|
return;
|
||||||
try {
|
try {
|
||||||
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(((WorldServer) handle.world).getChunkProvider().playerChunkMap, handle,
|
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(((WorldServer) handle.world).getChunkProvider().playerChunkMap, handle,
|
||||||
!remove);
|
!remove);
|
||||||
|
|
|
@ -358,11 +358,17 @@ public class NMSImpl implements NMSBridge {
|
||||||
EntityPlayer handle = (EntityPlayer) getHandle(entity);
|
EntityPlayer handle = (EntityPlayer) getHandle(entity);
|
||||||
if (handle.world == null)
|
if (handle.world == null)
|
||||||
return;
|
return;
|
||||||
if (remove) {
|
List<? extends EntityHuman> players = handle.world.getPlayers();
|
||||||
handle.world.getPlayers().remove(handle);
|
boolean changed = false;
|
||||||
} else if (!handle.world.getPlayers().contains(handle)) {
|
if (remove && players.contains(handle)) {
|
||||||
((List) handle.world.getPlayers()).add(handle);
|
players.remove(handle);
|
||||||
|
changed = true;
|
||||||
|
} else if (!remove && !players.contains(handle)) {
|
||||||
|
((List) players).add(handle);
|
||||||
|
changed = true;
|
||||||
}
|
}
|
||||||
|
if (!changed)
|
||||||
|
return;
|
||||||
try {
|
try {
|
||||||
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(((WorldServer) handle.world).getChunkProvider().playerChunkMap, handle,
|
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(((WorldServer) handle.world).getChunkProvider().playerChunkMap, handle,
|
||||||
!remove);
|
!remove);
|
||||||
|
|
|
@ -372,11 +372,17 @@ public class NMSImpl implements NMSBridge {
|
||||||
EntityPlayer handle = (EntityPlayer) getHandle(entity);
|
EntityPlayer handle = (EntityPlayer) getHandle(entity);
|
||||||
if (handle.world == null)
|
if (handle.world == null)
|
||||||
return;
|
return;
|
||||||
if (remove) {
|
List<? extends EntityHuman> players = handle.world.getPlayers();
|
||||||
handle.world.getPlayers().remove(handle);
|
boolean changed = false;
|
||||||
} else if (!handle.world.getPlayers().contains(handle)) {
|
if (remove && players.contains(handle)) {
|
||||||
((List) handle.world.getPlayers()).add(handle);
|
players.remove(handle);
|
||||||
|
changed = true;
|
||||||
|
} else if (!remove && !players.contains(handle)) {
|
||||||
|
((List) players).add(handle);
|
||||||
|
changed = true;
|
||||||
}
|
}
|
||||||
|
if (!changed)
|
||||||
|
return;
|
||||||
try {
|
try {
|
||||||
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(((WorldServer) handle.world).getChunkProvider().playerChunkMap, handle,
|
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(((WorldServer) handle.world).getChunkProvider().playerChunkMap, handle,
|
||||||
!remove);
|
!remove);
|
||||||
|
|
|
@ -370,11 +370,19 @@ public class NMSImpl implements NMSBridge {
|
||||||
ServerPlayer handle = (ServerPlayer) getHandle(entity);
|
ServerPlayer handle = (ServerPlayer) getHandle(entity);
|
||||||
if (handle.level == null)
|
if (handle.level == null)
|
||||||
return;
|
return;
|
||||||
if (remove) {
|
|
||||||
handle.level.players().remove(handle);
|
List<? extends net.minecraft.world.entity.player.Player> players = handle.level.players();
|
||||||
} else if (!handle.level.players().contains(handle)) {
|
boolean changed = false;
|
||||||
((List) handle.level.players()).add(handle);
|
if (remove && players.contains(handle)) {
|
||||||
|
players.remove(handle);
|
||||||
|
changed = true;
|
||||||
|
} else if (!remove && !players.contains(handle)) {
|
||||||
|
((List) players).add(handle);
|
||||||
|
changed = true;
|
||||||
}
|
}
|
||||||
|
if (!changed)
|
||||||
|
return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(
|
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(
|
||||||
((ServerChunkCache) ((ServerLevel) handle.level).getChunkSource()).chunkMap, handle, !remove);
|
((ServerChunkCache) ((ServerLevel) handle.level).getChunkSource()).chunkMap, handle, !remove);
|
||||||
|
|
|
@ -374,11 +374,19 @@ public class NMSImpl implements NMSBridge {
|
||||||
ServerPlayer handle = (ServerPlayer) getHandle(entity);
|
ServerPlayer handle = (ServerPlayer) getHandle(entity);
|
||||||
if (handle.level == null)
|
if (handle.level == null)
|
||||||
return;
|
return;
|
||||||
if (remove) {
|
|
||||||
handle.level.players().remove(handle);
|
List<? extends net.minecraft.world.entity.player.Player> players = handle.level.players();
|
||||||
} else if (!handle.level.players().contains(handle)) {
|
boolean changed = false;
|
||||||
((List) handle.level.players()).add(handle);
|
if (remove && players.contains(handle)) {
|
||||||
|
players.remove(handle);
|
||||||
|
changed = true;
|
||||||
|
} else if (!remove && !players.contains(handle)) {
|
||||||
|
((List) players).add(handle);
|
||||||
|
changed = true;
|
||||||
}
|
}
|
||||||
|
if (!changed)
|
||||||
|
return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(((ServerLevel) handle.level).getChunkSource().chunkMap, handle,
|
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(((ServerLevel) handle.level).getChunkSource().chunkMap, handle,
|
||||||
!remove);
|
!remove);
|
||||||
|
|
|
@ -410,11 +410,19 @@ public class NMSImpl implements NMSBridge {
|
||||||
ServerPlayer handle = (ServerPlayer) getHandle(entity);
|
ServerPlayer handle = (ServerPlayer) getHandle(entity);
|
||||||
if (handle.level == null)
|
if (handle.level == null)
|
||||||
return;
|
return;
|
||||||
if (remove) {
|
|
||||||
handle.level.players().remove(handle);
|
List<? extends net.minecraft.world.entity.player.Player> players = handle.level.players();
|
||||||
} else if (!handle.level.players().contains(handle)) {
|
boolean changed = false;
|
||||||
((List) handle.level.players()).add(handle);
|
if (remove && players.contains(handle)) {
|
||||||
|
players.remove(handle);
|
||||||
|
changed = true;
|
||||||
|
} else if (!remove && !players.contains(handle)) {
|
||||||
|
((List) players).add(handle);
|
||||||
|
changed = true;
|
||||||
}
|
}
|
||||||
|
if (!changed)
|
||||||
|
return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(((ServerLevel) handle.level).getChunkSource().chunkMap, handle,
|
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(((ServerLevel) handle.level).getChunkSource().chunkMap, handle,
|
||||||
!remove);
|
!remove);
|
||||||
|
|
|
@ -401,11 +401,19 @@ public class NMSImpl implements NMSBridge {
|
||||||
ServerPlayer handle = (ServerPlayer) getHandle(entity);
|
ServerPlayer handle = (ServerPlayer) getHandle(entity);
|
||||||
if (handle.level() == null)
|
if (handle.level() == null)
|
||||||
return;
|
return;
|
||||||
if (remove) {
|
|
||||||
handle.level().players().remove(handle);
|
List<? extends net.minecraft.world.entity.player.Player> players = handle.level().players();
|
||||||
} else if (!handle.level().players().contains(handle)) {
|
boolean changed = false;
|
||||||
((List) handle.level().players()).add(handle);
|
if (remove && players.contains(handle)) {
|
||||||
|
players.remove(handle);
|
||||||
|
changed = true;
|
||||||
|
} else if (!remove && !players.contains(handle)) {
|
||||||
|
((List) players).add(handle);
|
||||||
|
changed = true;
|
||||||
}
|
}
|
||||||
|
if (!changed)
|
||||||
|
return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(((ServerLevel) handle.level()).getChunkSource().chunkMap, handle,
|
CHUNKMAP_UPDATE_PLAYER_STATUS.invoke(((ServerLevel) handle.level()).getChunkSource().chunkMap, handle,
|
||||||
!remove);
|
!remove);
|
||||||
|
|
Loading…
Reference in New Issue