Reset state of level detection on world exit
This commit is contained in:
@@ -25,6 +25,7 @@ import com.seibel.distanthorizons.api.methods.events.abstractEvents.*;
|
||||
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
|
||||
import com.seibel.distanthorizons.core.config.Config;
|
||||
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
|
||||
import com.seibel.distanthorizons.core.network.session.Session;
|
||||
import com.seibel.distanthorizons.coreapi.ModInfo;
|
||||
import com.seibel.distanthorizons.api.enums.rendering.EDhApiDebugRendering;
|
||||
import com.seibel.distanthorizons.api.enums.rendering.EDhApiRendererMode;
|
||||
@@ -157,6 +158,8 @@ public class ClientApi
|
||||
SharedApi.setDhWorld(null);
|
||||
}
|
||||
|
||||
this.pluginChannelApi.reset();
|
||||
|
||||
// remove any waiting items
|
||||
this.waitingChunkByClientLevelAndPos.clear();
|
||||
this.waitingClientLevels.clear();
|
||||
@@ -332,7 +335,11 @@ public class ClientApi
|
||||
|
||||
public void pluginMessageReceived(@NotNull NetworkMessage message)
|
||||
{
|
||||
this.pluginChannelApi.session.tryHandleMessage(message);
|
||||
Session session = this.pluginChannelApi.session;
|
||||
if (session != null)
|
||||
{
|
||||
session.tryHandleMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+10
-2
@@ -12,6 +12,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftCli
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.function.Consumer;
|
||||
@@ -29,6 +30,7 @@ public class ClientPluginChannelApi
|
||||
private final Consumer<IClientLevelWrapper> levelUnloadHandler;
|
||||
private final Consumer<IServerKeyedClientLevel> multiverseLevelLoadHandler;
|
||||
|
||||
@Nullable
|
||||
public Session session;
|
||||
|
||||
|
||||
@@ -49,8 +51,8 @@ public class ClientPluginChannelApi
|
||||
{
|
||||
Objects.requireNonNull(session);
|
||||
this.session = session;
|
||||
this.session.registerHandler(CurrentLevelKeyMessage.class, this::onCurrentLevelKeyMessage);
|
||||
this.session.registerHandler(CloseEvent.class, this::onClose);
|
||||
session.registerHandler(CurrentLevelKeyMessage.class, this::onCurrentLevelKeyMessage);
|
||||
session.registerHandler(CloseEvent.class, this::onClose);
|
||||
}
|
||||
|
||||
private void onCurrentLevelKeyMessage(CurrentLevelKeyMessage msg)
|
||||
@@ -100,6 +102,12 @@ public class ClientPluginChannelApi
|
||||
|
||||
private void onClose(CloseEvent event)
|
||||
{
|
||||
this.reset();
|
||||
}
|
||||
|
||||
public void reset()
|
||||
{
|
||||
this.session = null;
|
||||
KEYED_CLIENT_LEVEL_MANAGER.disable();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user