package net.fabricmc.fabric.mixin.client.rendering;

import com.llamalad7.mixinextras.sugar.Local;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.rendering.v1.LivingEntityFeatureRenderEvents;
import net.minecraft.class_10055;
import net.minecraft.class_11659;
import net.minecraft.class_4587;
import net.minecraft.class_972;
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_972.class})
public class CapeFeatureRendererMixin {
   @Inject(
      at = {@At("HEAD")},
      method = {"method_4177(Lnet/minecraft/class_4587;Lnet/minecraft/class_11659;ILnet/minecraft/class_10055;FF)V"},
      cancellable = true
   )
   public void injectCapeRenderCheck(class_4587 matrixStack, class_11659 orderedRenderCommandQueue, int i, class_10055 playerEntityRenderState, float f, float g, CallbackInfo ci, @Local(argsOnly = true) class_10055 state) {
      if (!((LivingEntityFeatureRenderEvents.AllowCapeRender)LivingEntityFeatureRenderEvents.ALLOW_CAPE_RENDER.invoker()).allowCapeRender(state)) {
         ci.cancel();
      }

   }
}
