Redo loading

This commit is contained in:
Acuadragon100
2026-04-24 22:04:50 +02:00
parent 3a065d1784
commit 6600703d52
6 changed files with 14 additions and 15 deletions
@@ -8,6 +8,7 @@ import com.seibel.distanthorizons.common.wrappers.block.ClientBlockStateColorCac
import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper;
import com.seibel.distanthorizons.common.wrappers.level.KeyedClientLevelManager;
import com.seibel.distanthorizons.core.api.internal.ClientApi;
import com.seibel.distanthorizons.core.api.internal.SharedApi;
import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.level.*;
@@ -15,6 +16,7 @@ import com.seibel.distanthorizons.core.level.IServerKeyedClientLevel;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos;
import com.seibel.distanthorizons.core.pos.DhChunkPos;
import com.seibel.distanthorizons.core.world.AbstractDhWorld;
import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IBiomeWrapper;
@@ -155,7 +157,10 @@ public class ClientLevelWrapper implements IClientLevelWrapper
if (wrapper.isDhLevelLoaded() && wrapper.level != MINECRAFT.level && currentTime - wrapper.getLastRenderTime() > timeout)
{
LOGGER.debug("Unloading level " + wrapper.getDhIdentifier() + " due to inactivity");
ClientApi.INSTANCE.clientLevelUnloadEvent(wrapper);
AbstractDhWorld world = SharedApi.getAbstractDhWorld();
if (world != null) {
world.unloadLevel(wrapper);
}
if (wrapper.isDhLevelLoaded()) {
wrapper.onUnload();
}
@@ -10,6 +10,7 @@ import com.seibel.distanthorizons.common.wrappers.misc.ServerPlayerWrapper;
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper;
import com.seibel.distanthorizons.core.api.internal.ServerApi;
import com.seibel.distanthorizons.core.api.internal.SharedApi;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.common.AbstractPluginPacketSender;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
@@ -113,7 +114,7 @@ public class FabricServerProxy implements AbstractModInitializer.IEventProxy
ServerLevelEvents.LOAD.register((server, level) ->
#endif
{
ServerApi.INSTANCE.serverLevelLoadEvent(this.getServerLevelWrapper(level));
SharedApi.getAbstractDhWorld().getOrLoadLevel(this.getServerLevelWrapper(level));
});
// ServerLevelUnloadEvent
@@ -123,7 +124,7 @@ public class FabricServerProxy implements AbstractModInitializer.IEventProxy
ServerLevelEvents.UNLOAD.register((server, level) ->
#endif
{
ServerApi.INSTANCE.serverLevelUnloadEvent(this.getServerLevelWrapper(level));
SharedApi.getAbstractDhWorld().unloadLevel(this.getServerLevelWrapper(level));
});
// ServerChunkLoadEvent
@@ -31,8 +31,7 @@ public class MixinClientPacketListener
@Inject(method = "handleLogin", at = @At("RETURN"))
void onHandleLoginEnd(CallbackInfo ci)
{
ClientApi.INSTANCE.onClientOnlyConnected();
ClientApi.INSTANCE.clientLevelLoadEvent(ClientLevelWrapper.getWrapper(this.level, true));
ClientApi.INSTANCE.onClientOnlyConnected();
}
#if MC_VER < MC_1_19_4
@@ -7,6 +7,7 @@ import com.seibel.distanthorizons.common.wrappers.misc.ServerPlayerWrapper;
import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper;
import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGenerationEnvironment;
import com.seibel.distanthorizons.core.api.internal.ServerApi;
import com.seibel.distanthorizons.core.api.internal.SharedApi;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
@@ -87,7 +88,7 @@ public class NeoforgeServerProxy implements AbstractModInitializer.IEventProxy
{
if (GetEventLevel(event) instanceof ServerLevel)
{
this.serverApi.serverLevelLoadEvent(this.getServerLevelWrapper((ServerLevel) GetEventLevel(event)));
SharedApi.getAbstractDhWorld().getOrLoadLevel(this.getServerLevelWrapper((ServerLevel) GetEventLevel(event)));
}
}
@@ -97,7 +98,7 @@ public class NeoforgeServerProxy implements AbstractModInitializer.IEventProxy
{
if (GetEventLevel(event) instanceof ServerLevel)
{
this.serverApi.serverLevelUnloadEvent(this.getServerLevelWrapper((ServerLevel) GetEventLevel(event)));
SharedApi.getAbstractDhWorld().unloadLevel(this.getServerLevelWrapper((ServerLevel) GetEventLevel(event)));
}
}
@@ -1,11 +1,8 @@
package com.seibel.distanthorizons.neoforge.mixins.client;
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
import com.seibel.distanthorizons.core.api.internal.ClientApi;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.multiplayer.ClientPacketListener;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@@ -13,14 +10,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(ClientPacketListener.class)
public class MixinClientPacketListener
{
@Shadow
private ClientLevel level;
@Inject(method = "handleLogin", at = @At("RETURN"))
void onHandleLoginEnd(CallbackInfo ci)
{
ClientApi.INSTANCE.onClientOnlyConnected();
ClientApi.INSTANCE.clientLevelLoadEvent(ClientLevelWrapper.getWrapper(this.level, true));
}
#if MC_VER < MC_1_19_4