2022-06-20 09:55:51 -05:00
|
|
|
package fathertoast.specialmobs.client;
|
|
|
|
|
|
|
|
import fathertoast.specialmobs.client.renderer.entity.SpecialCreeperRenderer;
|
2022-06-23 22:34:24 -05:00
|
|
|
import fathertoast.specialmobs.client.renderer.entity.SpecialSilverfishRenderer;
|
2022-06-23 14:22:05 -05:00
|
|
|
import fathertoast.specialmobs.client.renderer.entity.SpecialSkeletonRenderer;
|
2022-06-23 20:31:46 -05:00
|
|
|
import fathertoast.specialmobs.client.renderer.entity.SpecialSpiderRenderer;
|
2022-06-24 15:38:51 +02:00
|
|
|
import fathertoast.specialmobs.client.renderer.entity.SpecialZombieRenderer;
|
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-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 19:26:03 +02:00
|
|
|
|
|
|
|
@SuppressWarnings("all")
|
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-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 19:26:03 +02:00
|
|
|
|
|
|
|
// Custom renderers
|
|
|
|
registerRenderer( NinjaSkeletonEntity.class, NinjaSkeletonRenderer::new);
|
2022-06-20 09:55:51 -05:00
|
|
|
}
|
|
|
|
|
2022-06-26 19:26:03 +02: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 19:26:03 +02:00
|
|
|
if ( !species.hasCustomRenderer )
|
|
|
|
RenderingRegistry.registerEntityRenderingHandler(species.entityType.get(), renderFactory);
|
|
|
|
}
|
|
|
|
|
|
|
|
private static <T extends LivingEntity> void registerRenderer(Class<T> entityClass, IRenderFactory<? super T> renderFactory) {
|
|
|
|
MobFamily.Species<T> species = MobFamily.findSpecies(entityClass);
|
|
|
|
|
|
|
|
if (species == null) {
|
|
|
|
SpecialMobs.LOG.error("Could not register renderer for entity class {}, as no belonging mob species was found.", entityClass.getSimpleName());
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
RenderingRegistry.registerEntityRenderingHandler(species.entityType.get(), renderFactory);
|
2022-06-20 09:55:51 -05:00
|
|
|
}
|
|
|
|
}
|