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

import java.util.Map;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.impl.client.rendering.BlockEntityRendererRegistryImpl;
import net.minecraft.class_2591;
import net.minecraft.class_5614;
import net.minecraft.class_5616;
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_5616.class})
public abstract class BlockEntityRendererFactoriesMixin {
   @Shadow
   @Final
   private static Map<class_2591<?>, class_5614<?, ?>> field_27752;

   @Inject(
      at = {@At("RETURN")},
      method = {"<clinit>*"}
   )
   private static void init(CallbackInfo ci) {
      BlockEntityRendererRegistryImpl.setup((t, factory) -> field_27752.put(t, factory));
   }
}
