diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java index 4246b86dd..4c8b683c5 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java @@ -167,15 +167,15 @@ public class DhClientLevel extends AbstractDhLevel implements IDhClientLevel } + // Check this before decoding data to prevent errors if multiple client levels are receiving data at once (Immersive Portals compatibility). + boolean isSameLevel = message.isSameLevelAs(this.levelWrapper); + NETWORK_LOGGER.debug("Buffer ["+message.payload.dtoBufferId+"] isSameLevel: ["+isSameLevel+"]"); + if (!isSameLevel) + { + return; + } try (FullDataSourceV2DTO dataSourceDto = this.networkState.fullDataPayloadReceiver.decodeDataSource(message.payload)) { - boolean isSameLevel = message.isSameLevelAs(this.levelWrapper); - NETWORK_LOGGER.debug("Buffer ["+message.payload.dtoBufferId+"] isSameLevel: ["+isSameLevel+"]"); - if (!isSameLevel) - { - return; - } - Executor executor = ThreadPoolUtil.getFileHandlerExecutor(); if (executor != null)