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

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

import com.llamalad7.mixinextras.sugar.Local;
import java.util.Map;
import java.util.function.Consumer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientChunkEvents;
import net.minecraft.class_1923;
import net.minecraft.class_2540;
import net.minecraft.class_2818;
import net.minecraft.class_2902;
import net.minecraft.class_631;
import net.minecraft.class_638;
import net.minecraft.class_6603;
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.At.Shift;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Environment(EnvType.CLIENT)
@Mixin({class_631.class})
public abstract class ClientChunkManagerMixin {
   @Final
   @Shadow
   class_638 field_16525;

   @Inject(
      method = {"method_16020(IILnet/minecraft/class_2540;Ljava/util/Map;Ljava/util/function/Consumer;)Lnet/minecraft/class_2818;"},
      at = {@At("TAIL")}
   )
   private void onChunkLoad(int x, int z, class_2540 packetByteBuf, Map<class_2902.class_2903, long[]> highmap, Consumer<class_6603.class_6605> consumer, CallbackInfoReturnable<class_2818> info) {
      ((ClientChunkEvents.Load)ClientChunkEvents.CHUNK_LOAD.invoker()).onChunkLoad(this.field_16525, (class_2818)info.getReturnValue());
   }

   @Inject(
      method = {"method_16020(IILnet/minecraft/class_2540;Ljava/util/Map;Ljava/util/function/Consumer;)Lnet/minecraft/class_2818;"},
      at = {@At(
   value = "NEW",
   target = "Lnet/minecraft/class_2818;",
   shift = Shift.BEFORE
)}
   )
   private void onChunkUnload(int x, int z, class_2540 buf, Map<class_2902.class_2903, long[]> highmap, Consumer<class_6603.class_6605> consumer, CallbackInfoReturnable<class_2818> info, @Local class_2818 worldChunk) {
      if (worldChunk != null) {
         ((ClientChunkEvents.Unload)ClientChunkEvents.CHUNK_UNLOAD.invoker()).onChunkUnload(this.field_16525, worldChunk);
      }

   }

   @Inject(
      method = {"method_2859(Lnet/minecraft/class_1923;)V"},
      at = {@At(
   value = "INVOKE",
   target = "Lnet/minecraft/class_631$class_3681;method_62893(ILnet/minecraft/class_2818;)V"
)}
   )
   private void onChunkUnload(class_1923 pos, CallbackInfo ci, @Local class_2818 chunk) {
      ((ClientChunkEvents.Unload)ClientChunkEvents.CHUNK_UNLOAD.invoker()).onChunkUnload(this.field_16525, chunk);
   }

   @Inject(
      method = {"method_20180(I)V"},
      at = {@At(
   value = "INVOKE",
   target = "Lnet/minecraft/class_631$class_3681;method_16034(II)Z"
)}
   )
   private void onUpdateLoadDistance(int loadDistance, CallbackInfo ci, @Local class_631.class_3681 clientChunkMap, @Local class_2818 oldChunk, @Local class_1923 chunkPos) {
      if (!clientChunkMap.method_16034(chunkPos.field_9181, chunkPos.field_9180)) {
         ((ClientChunkEvents.Unload)ClientChunkEvents.CHUNK_UNLOAD.invoker()).onChunkUnload(this.field_16525, oldChunk);
      }

   }
}
    
Download file