fabric-lifecycle-events-v1-2.6.9+33df5e6e6f.jar

Download file
    package net.fabricmc.fabric.mixin.event.lifecycle.client;

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.ClientEntityEvents;
import net.fabricmc.fabric.api.event.lifecycle.v1.CommonLifecycleEvents;
import net.fabricmc.fabric.impl.event.lifecycle.LoadedChunksCache;
import net.minecraft.class_1297;
import net.minecraft.class_2586;
import net.minecraft.class_2678;
import net.minecraft.class_2724;
import net.minecraft.class_2790;
import net.minecraft.class_2818;
import net.minecraft.class_5455;
import net.minecraft.class_634;
import net.minecraft.class_638;
import org.spongepowered.asm.mixin.Final;
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;

@Environment(EnvType.CLIENT)
@Mixin({class_634.class})
abstract class ClientPlayNetworkHandlerMixin {
   @Shadow
   private class_638 field_3699;
   @Shadow
   @Final
   private class_5455.class_6890 field_25063;

   @Inject(
      method = {"method_11117(Lnet/minecraft/class_2724;)V"},
      at = {@At(
   value = "NEW",
   target = "Lnet/minecraft/class_638;"
)}
   )
   private void onPlayerRespawn(class_2724 packet, CallbackInfo ci) {
      if (this.field_3699 != null) {
         for(class_1297 entity : this.field_3699.method_18112()) {
            ((ClientEntityEvents.Unload)ClientEntityEvents.ENTITY_UNLOAD.invoker()).onUnload(entity, this.field_3699);
         }

         for(class_2818 chunk : ((LoadedChunksCache)this.field_3699).fabric_getLoadedChunks()) {
            for(class_2586 blockEntity : chunk.method_12214().values()) {
               ((ClientBlockEntityEvents.Unload)ClientBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker()).onUnload(blockEntity, this.field_3699);
            }
         }
      }

   }

   @Inject(
      method = {"method_11120(Lnet/minecraft/class_2678;)V"},
      at = {@At(
   value = "NEW",
   target = "Lnet/minecraft/class_638;"
)}
   )
   private void onGameJoin(class_2678 packet, CallbackInfo ci) {
      if (this.field_3699 != null) {
         for(class_1297 entity : this.field_3699.method_18112()) {
            ((ClientEntityEvents.Unload)ClientEntityEvents.ENTITY_UNLOAD.invoker()).onUnload(entity, this.field_3699);
         }

         for(class_2818 chunk : ((LoadedChunksCache)this.field_3699).fabric_getLoadedChunks()) {
            for(class_2586 blockEntity : chunk.method_12214().values()) {
               ((ClientBlockEntityEvents.Unload)ClientBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker()).onUnload(blockEntity, this.field_3699);
            }
         }
      }

   }

   @Inject(
      method = {"method_54134()V"},
      at = {@At("HEAD")}
   )
   private void onClearWorld(CallbackInfo ci) {
      if (this.field_3699 != null) {
         for(class_1297 entity : this.field_3699.method_18112()) {
            ((ClientEntityEvents.Unload)ClientEntityEvents.ENTITY_UNLOAD.invoker()).onUnload(entity, this.field_3699);
         }

         for(class_2818 chunk : ((LoadedChunksCache)this.field_3699).fabric_getLoadedChunks()) {
            for(class_2586 blockEntity : chunk.method_12214().values()) {
               ((ClientBlockEntityEvents.Unload)ClientBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker()).onUnload(blockEntity, this.field_3699);
            }
         }
      }

   }

   @Inject(
      method = {"method_11126(Lnet/minecraft/class_2790;)V"},
      at = {@At(
   value = "INVOKE",
   target = "Lnet/minecraft/class_9895;method_61753(Lnet/minecraft/class_7225$class_7874;Lnet/minecraft/class_7699;)Lnet/minecraft/class_9895;"
)}
   )
   private void invokeTagsLoaded(class_2790 packet, CallbackInfo ci) {
      ((CommonLifecycleEvents.TagsLoaded)CommonLifecycleEvents.TAGS_LOADED.invoker()).onTagsLoaded(this.field_25063, true);
   }
}
    
Download file