2022-06-20 09:55:51 -05:00
package fathertoast.specialmobs.client ;
2022-06-24 12:47:44 -05:00
import fathertoast.specialmobs.client.renderer.entity.* ;
2022-06-20 09:55:51 -05:00
import fathertoast.specialmobs.common.bestiary.MobFamily ;
import fathertoast.specialmobs.common.core.SpecialMobs ;
2022-06-26 19:26:03 +02:00
import fathertoast.specialmobs.common.entity.skeleton.NinjaSkeletonEntity ;
2022-06-26 16:40:16 -05:00
import fathertoast.specialmobs.common.entity.witherskeleton.NinjaWitherSkeletonEntity ;
2022-06-20 09:55:51 -05:00
import mcp.MethodsReturnNonnullByDefault ;
import net.minecraft.entity.LivingEntity ;
import net.minecraftforge.api.distmarker.Dist ;
import net.minecraftforge.eventbus.api.SubscribeEvent ;
import net.minecraftforge.fml.client.registry.IRenderFactory ;
import net.minecraftforge.fml.client.registry.RenderingRegistry ;
import net.minecraftforge.fml.common.Mod ;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent ;
import javax.annotation.ParametersAreNonnullByDefault ;
@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
@Mod.EventBusSubscriber ( value = Dist . CLIENT , modid = SpecialMobs . MOD_ID , bus = Mod . EventBusSubscriber . Bus . MOD )
public class ClientRegister {
@SubscribeEvent
public static void onClientSetup ( FMLClientSetupEvent event ) {
registerEntityRenderers ( ) ;
}
2022-06-26 16:40:16 -05:00
2022-06-20 09:55:51 -05:00
private static void registerEntityRenderers ( ) {
// Family-based renderers
registerFamilyRenderers ( MobFamily . CREEPER , SpecialCreeperRenderer : : new ) ;
2022-06-24 15:38:51 +02:00
registerFamilyRenderers ( MobFamily . ZOMBIE , SpecialZombieRenderer : : new ) ;
2022-06-24 22:06:35 -05:00
registerFamilyRenderers ( MobFamily . SKELETON , SpecialSkeletonRenderer : : new ) ;
2022-06-24 22:50:48 -05:00
registerFamilyRenderers ( MobFamily . WITHER_SKELETON , SpecialSkeletonRenderer : : new ) ;
2022-06-25 23:46:48 -05:00
registerFamilyRenderers ( MobFamily . SLIME , SpecialSlimeRenderer : : new ) ;
2022-06-26 16:40:16 -05:00
registerFamilyRenderers ( MobFamily . MAGMA_CUBE , SpecialMagmaCubeRenderer : : new ) ;
2022-06-23 20:31:46 -05:00
registerFamilyRenderers ( MobFamily . SPIDER , SpecialSpiderRenderer : : new ) ;
2022-06-23 21:20:36 -05:00
registerFamilyRenderers ( MobFamily . CAVE_SPIDER , SpecialSpiderRenderer : : new ) ;
2022-06-23 22:34:24 -05:00
registerFamilyRenderers ( MobFamily . SILVERFISH , SpecialSilverfishRenderer : : new ) ;
2022-06-24 12:47:44 -05:00
registerFamilyRenderers ( MobFamily . ENDERMAN , SpecialEndermanRenderer : : new ) ;
2022-06-26 17:25:52 -05:00
//registerFamilyRenderers( MobFamily.WITCH, SpecialWitchRenderer::new );
2022-06-26 16:40:16 -05:00
2022-06-26 19:26:03 +02:00
// Custom renderers
2022-06-26 16:40:16 -05:00
registerRenderer ( NinjaSkeletonEntity . class , NinjaSkeletonRenderer : : new ) ;
registerRenderer ( NinjaWitherSkeletonEntity . class , NinjaSkeletonRenderer : : new ) ;
2022-06-20 09:55:51 -05:00
}
2022-06-26 16:40:16 -05:00
private static < T extends LivingEntity > void registerFamilyRenderers ( MobFamily < T > family , IRenderFactory < ? super T > renderFactory ) {
2022-06-20 09:55:51 -05:00
RenderingRegistry . registerEntityRenderingHandler ( family . vanillaReplacement . entityType . get ( ) , renderFactory ) ;
for ( MobFamily . Species < ? extends T > species : family . variants )
2022-06-26 16:40:16 -05:00
RenderingRegistry . registerEntityRenderingHandler ( species . entityType . get ( ) , renderFactory ) ;
2022-06-26 19:26:03 +02:00
}
2022-06-26 16:40:16 -05:00
private static < T extends LivingEntity > void registerRenderer ( Class < T > entityClass , IRenderFactory < ? super T > renderFactory ) {
MobFamily . Species < T > species = MobFamily . findSpecies ( entityClass ) ;
2022-06-26 17:25:52 -05:00
if ( species = = null )
throw new IllegalArgumentException ( " Could not register renderer for entity class ' " + entityClass . getSimpleName ( ) + " ', as no belonging mob species was found. " ) ;
2022-06-26 16:40:16 -05:00
RenderingRegistry . registerEntityRenderingHandler ( species . entityType . get ( ) , renderFactory ) ;
2022-06-20 09:55:51 -05:00
}
}