Is this a valid way to register entities? Be it entities extending classes such as ProjectileItemEntity or MonsterEntity class.
The reason I ask is because while the mob entity is registring and showing in game just fine, the throwable entity is not, and is completely invisible in game when spawned (even when I don't register entity rendering with the RenderingRegistry class - this would in turn render it as a white box which is not happening).
public static EntityType<?> ENT_MOB = null;
public static EntityType<EntityModProjectile> ENT_PROJECTILE = null;
static
{
ENT_MOB = registerEntityAndEgg(event.getRegistry(), EntityType.Builder.create(EntityModMob::new, EntityClassification.MONSTER).size(0.6F, 1.95F), 0xdcdcdc, 0xe21a1a, "ent_mob");
ENT_PROJECTILE = registerEntity(EntityType.Builder.<EntityModProjectile>create(EntityModProjectile::new, EntityClassification.MISC).size(0.25F, 0.25F).setTrackingRange(64).setUpdateInterval(20).setShouldReceiveVelocityUpdates(false), "ent_projectile");
}
@SubscribeEvent
public static void registerItems(final RegistryEvent.Register<EntityType<?>> event)
{
event.getRegistry().registerAll(ENT_MOB, ENT_PROJECTILE);
}
public static <T extends Entity> EntityType<T> registerEntity(EntityType.Builder builder, String name)
{
EntityType<T> type = (EntityType<T>) builder.build(Main.MODID + '.' + name).setRegistryName(name);
return type;
}
And this is how I register entity rendering:
RenderingRegistry.registerEntityRenderingHandler(EntityModMob.class, renderManager -> new RenderModMob(renderManager));
RenderingRegistry.registerEntityRenderingHandler(EntityModProjectile.class, renderManager -> new SpriteRenderer<EntityModProjectile>(renderManager, Minecraft.getInstance().getItemRenderer()));
EntityModProjectile class:
public class EntityModProjectile extends ProjectileItemEntity
{
public EntityModProjectile(EntityType<? extends EntityModProjectile> entityTypeIn, World worldIn)
{
super(entityTypeIn, worldIn);
}
public EntityModProjectile(World worldIn, LivingEntity throwerIn)
{
super(ModEntityType.ENT_PROJECTILE, throwerIn, worldIn);
}
public EntityModProjectile(World worldIn, double x, double y, double z)
{
super(ModEntityType.ENT_PROJECTILE, x, y, z, worldIn);
}
@Override
protected Item func_213885_i()
{
return ModItems.MOD_PROJECTILE;
}
}