NPE check when removing player from region zones.

This commit is contained in:
MobiusDevelopment 2022-01-29 23:38:26 +00:00
parent 26045e9bf0
commit 212b19797f
26 changed files with 163 additions and 54 deletions

View File

@ -269,6 +269,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10941,8 +10942,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -271,6 +271,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10944,8 +10945,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -272,6 +272,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10946,8 +10947,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -274,6 +274,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10927,8 +10928,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -273,6 +273,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10951,8 +10952,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -273,6 +273,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10954,8 +10955,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -273,6 +273,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10960,8 +10961,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -280,6 +280,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10989,8 +10990,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -280,6 +280,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -11105,8 +11106,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -285,6 +285,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -11132,8 +11133,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -11183,7 +11183,7 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{

View File

@ -21,8 +21,6 @@ import java.util.logging.Logger;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.instancemanager.AntiFeedManager;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
@ -138,7 +136,6 @@ public class Disconnection
{
if ((_player != null) && _player.isOnline())
{
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogout(_player), _player);
_player.deleteMe();
}
}

View File

@ -12884,10 +12884,11 @@ public class Player extends Playable
}
}
// Remove from world regions zones
if (getWorldRegion() != null)
// Remove from world regions zones.
final WorldRegion region = getWorldRegion();
if (region != null)
{
getWorldRegion().removeFromZones(this);
region.removeFromZones(this);
}
try

View File

@ -13207,10 +13207,11 @@ public class Player extends Playable
}
}
// Remove from world regions zones
if (getWorldRegion() != null)
// Remove from world regions zones.
final WorldRegion region = getWorldRegion();
if (region != null)
{
getWorldRegion().removeFromZones(this);
region.removeFromZones(this);
}
try

View File

@ -257,6 +257,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.BossZone;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
@ -11348,8 +11349,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -262,6 +262,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.BossZone;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
@ -11241,8 +11242,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -273,6 +273,7 @@ import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.vip.VipManager;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10844,8 +10845,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -273,6 +273,7 @@ import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.vip.VipManager;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10844,8 +10845,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -272,6 +272,7 @@ import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.vip.VipManager;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10830,8 +10831,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -276,6 +276,7 @@ import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.vip.VipManager;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10859,8 +10860,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -276,6 +276,7 @@ import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.vip.VipManager;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10859,8 +10860,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -285,6 +285,7 @@ import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.vip.VipManager;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10823,8 +10824,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -269,6 +269,7 @@ import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -10840,8 +10841,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -290,6 +290,7 @@ import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.vip.VipManager;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -11006,8 +11007,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -296,6 +296,7 @@ import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.vip.VipManager;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -11073,8 +11074,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())

View File

@ -296,6 +296,7 @@ import org.l2jmobius.gameserver.model.variables.AccountVariables;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.vip.VipManager;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.model.zone.ZoneRegion;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.model.zone.type.WaterZone;
import org.l2jmobius.gameserver.network.Disconnection;
@ -11073,8 +11074,12 @@ public class Player extends Playable
// Stop all toggles.
getEffectList().stopAllToggles();
// Remove from world regions zones
ZoneManager.getInstance().getRegion(this).removeFromZones(this);
// Remove from world regions zones.
final ZoneRegion region = ZoneManager.getInstance().getRegion(this);
if (region != null)
{
region.removeFromZones(this);
}
// If a Party is in progress, leave it (and festival party)
if (isInParty())