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.ClientTickEvents;
import net.minecraft.class_638;
import org.spongepowered.asm.mixin.Mixin;
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_638.class})
public abstract class ClientWorldMixin {
   @Inject(
      method = {"method_18116()V"},
      at = {@At("TAIL")}
   )
   public void tickWorldAfterBlockEntities(CallbackInfo ci) {
      ((ClientTickEvents.EndWorldTick)ClientTickEvents.END_WORLD_TICK.invoker()).onEndTick((class_638)this);
   }

   @Inject(
      method = {"method_18116()V"},
      at = {@At("HEAD")}
   )
   private void startWorldTick(CallbackInfo ci) {
      ((ClientTickEvents.StartWorldTick)ClientTickEvents.START_WORLD_TICK.invoker()).onStartTick((class_638)this);
   }
}
