package net.fabricmc.fabric.impl.client.event.lifecycle;

import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientBlockEntityEvents;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientChunkEvents;
import net.fabricmc.fabric.impl.event.lifecycle.LoadedChunksCache;
import net.minecraft.class_2586;

@Environment(EnvType.CLIENT)
public final class ClientLifecycleEventsImpl implements ClientModInitializer {
   public void onInitializeClient() {
      ClientChunkEvents.CHUNK_LOAD.register((ClientChunkEvents.Load)(world, chunk) -> ((LoadedChunksCache)world).fabric_markLoaded(chunk));
      ClientChunkEvents.CHUNK_UNLOAD.register((ClientChunkEvents.Unload)(world, chunk) -> ((LoadedChunksCache)world).fabric_markUnloaded(chunk));
      ClientChunkEvents.CHUNK_UNLOAD.register((ClientChunkEvents.Unload)(world, chunk) -> {
         for(class_2586 blockEntity : chunk.method_12214().values()) {
            ((ClientBlockEntityEvents.Unload)ClientBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker()).onUnload(blockEntity, world);
         }

      });
   }
}
