Handle null pointer on server shutdown

This commit is contained in:
James Seibel
2025-10-02 20:29:42 -05:00
parent 721124b886
commit a8748471df
2 changed files with 12 additions and 3 deletions
@@ -67,14 +67,21 @@ public abstract class AbstractDhServerWorld<TDhServerLevel extends AbstractDhSer
@Override
public void removePlayer(IServerPlayerWrapper serverPlayer)
{
IServerLevelWrapper level = serverPlayer.getLevel();
if (level == null)
IServerLevelWrapper playerLevel = serverPlayer.getLevel();
if (playerLevel == null)
{
// can happen during server shutdown
return;
}
this.getLevel(level).removePlayer(serverPlayer);
TDhServerLevel serverLevel = this.getLevel(playerLevel);
if (serverLevel == null)
{
// can happen during server shutdown
return;
}
serverLevel.removePlayer(serverPlayer);
this.serverPlayerStateManager.unregisterLeftPlayer(serverPlayer);
// If player's left, session is already closed
@@ -22,6 +22,7 @@ package com.seibel.distanthorizons.core.world;
import com.seibel.distanthorizons.core.level.IDhLevel;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.Closeable;
import java.util.concurrent.CompletableFuture;
@@ -31,6 +32,7 @@ public interface IDhWorld extends Closeable
{
IDhLevel getOrLoadLevel(@NotNull ILevelWrapper levelWrapper);
@Nullable
IDhLevel getLevel(@NotNull ILevelWrapper wrapper);
Iterable<? extends IDhLevel> getAllLoadedLevels();
int getLoadedLevelCount();