Skip to content

Commit

Permalink
Redo entity registration and use biomedict for trillium gen
Browse files Browse the repository at this point in the history
  • Loading branch information
itsmeow committed Oct 5, 2018
1 parent 520d0ed commit 4671f20
Show file tree
Hide file tree
Showing 6 changed files with 117 additions and 150 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package its_meow.betteranimalsplus.client;

import its_meow.betteranimalsplus.Ref;
import its_meow.betteranimalsplus.init.TextureRegistry;
import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
@EventBusSubscriber(modid = Ref.MOD_ID)
public class EventHandlerClient {

@SubscribeEvent
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package its_meow.betteranimalsplus.client.renderer.entity;

import its_meow.betteranimalsplus.common.entity.EntityBear;
import its_meow.betteranimalsplus.common.entity.EntityBearNeutral;
import its_meow.betteranimalsplus.common.entity.EntityBearNeutralKermode;
import its_meow.betteranimalsplus.common.entity.EntityCoyote;
import its_meow.betteranimalsplus.common.entity.EntityDeer;
import its_meow.betteranimalsplus.common.entity.EntityFeralWolf;
import its_meow.betteranimalsplus.common.entity.EntityFox;
import its_meow.betteranimalsplus.common.entity.EntityLammergeier;
import its_meow.betteranimalsplus.common.entity.EntityTarantula;
import its_meow.betteranimalsplus.common.entity.miniboss.hirschgeist.EntityHirschgeist;
import its_meow.betteranimalsplus.common.entity.projectile.EntityTarantulaHair;
import net.minecraftforge.fml.client.registry.IRenderFactory;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class EntityRendererRegistry {

@SideOnly(Side.CLIENT)
public static void registerEntityRenderers()
{
registerEntityRenderer(EntityBear.class, RenderBrownBear.FACTORY);
registerEntityRenderer(EntityBearNeutral.class, RenderBlackBear.FACTORY);
registerEntityRenderer(EntityBearNeutralKermode.class, RenderKermodeBear.FACTORY);
registerEntityRenderer(EntityDeer.class, RenderDeer.FACTORY);
registerEntityRenderer(EntityLammergeier.class, RenderLammergeier.FACTORY);
registerEntityRenderer(EntityFeralWolf.class, RenderCustomWolf.FACTORY);
registerEntityRenderer(EntityCoyote.class, RenderCoyote.FACTORY);
registerEntityRenderer(EntityFox.class, RenderFox.FACTORY);
registerEntityRenderer(EntityTarantulaHair.class, RenderTarantulaHair.FACTORY);
registerEntityRenderer(EntityTarantula.class, RenderTarantula.FACTORY);
registerEntityRenderer(EntityHirschgeist.class, RenderHirschgeist.FACTORY);
}

@SideOnly(Side.CLIENT)
public static void registerEntityRenderer(Class EntityClass, IRenderFactory RenderFactory){
RenderingRegistry.registerEntityRenderingHandler(EntityClass, RenderFactory);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.IChunkGenerator;
import net.minecraft.world.gen.feature.WorldGenerator;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.fml.common.IWorldGenerator;

public class TrilliumGenerator implements IWorldGenerator {
Expand All @@ -38,7 +39,7 @@ public void generate(Random random, int chunkX, int chunkZ, World world, IChunkG
int z = (chunkZ * 16) + 8 + (random.nextInt(16) - 8);
int y = 64;
BlockPos blockpos = new BlockPos(x, y, z);
if(world.getBiome(blockpos) == Biomes.SWAMPLAND || world.getBiome(blockpos) == Biomes.MUTATED_SWAMPLAND) {
if(BiomeDictionary.hasType(world.getBiome(blockpos), BiomeDictionary.Type.SWAMP)) {
for (int i = 0; i < 64; ++i)
{
blockpos = new BlockPos(x, i, z);
Expand Down
213 changes: 66 additions & 147 deletions src/main/java/its_meow/betteranimalsplus/init/MobRegistry.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package its_meow.betteranimalsplus.init;

import java.sql.Types;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.LinkedHashSet;
import java.util.Set;

import its_meow.betteranimalsplus.BetterAnimalsPlusMod;
Expand Down Expand Up @@ -39,77 +37,50 @@
import net.minecraft.world.storage.loot.LootTableList;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.common.BiomeDictionary.Type;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.client.registry.IRenderFactory;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.EntityEntry;
import net.minecraftforge.fml.common.registry.EntityEntryBuilder;
import net.minecraftforge.fml.common.registry.EntityRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.registries.IForgeRegistry;


public class MobRegistry {
public static int modEntities;


//Need to be using registry events. This will break in the near future.
public static void init(){
//regCre(Entity.class, "name", 0xFF052E (egg base), 0x14FFFC (egg spot), 25 (percent spawn), 1 (min amt), 3 (max amt), Biomes.PLAINS);
regMob(EntityBear.class, "BrownBear", 0x4F2900, 0x8E500E, 4, 1, 1, BiomeDictionary.getBiomes(Type.FOREST));
regMob(EntityBearNeutral.class, "BlackBear", 0x000000, 0x333333, 4, 1, 1, BiomeDictionary.getBiomes(Type.FOREST));
regMob(EntityBearNeutralKermode.class, "KermodeBear", 0xe8e8e8, 0xf7dabe, 2, 1, 1, BiomeDictionary.getBiomes(Type.FOREST));
regMob(EntityDeer.class, "Deer", 0x8e510b, 0xc6863b, 10, 1, 2, BiomeDictionary.getBiomes(Type.FOREST), BiomeDictionary.getBiomes(Type.MAGICAL));
regMob(EntityLammergeier.class, "Lammergeier", 0xd8d8d8, 0xd82b11, 7, 1, 2, BiomeDictionary.getBiomes(Type.HILLS), BiomeDictionary.getBiomes(Type.MOUNTAIN));
regMob(EntityFeralWolf.class, "FeralWolf", 0xbababa, 0x232323, 6, 1, 6, BiomeDictionary.getBiomes(Type.FOREST), BiomeDictionary.getBiomes(Type.MAGICAL), BiomeDictionary.getBiomes(Type.SPOOKY));
regMob(EntityCoyote.class, "Coyote", 0x866a31, 0xb69762, 20, 1, 6, BiomeDictionary.getBiomes(Type.SANDY), BiomeDictionary.getBiomes(Type.PLAINS));
regMob(EntityFox.class, "Fox", 0xe87422, 0x3f210c, 8, 1, 6, BiomeDictionary.getBiomes(Type.FOREST), BiomeDictionary.getBiomes(Type.MAGICAL));
registerNoEgg(EntityTarantulaHair.class, "tarantulahair");
public static LinkedHashSet<EntityEntry> entrySet = new LinkedHashSet<EntityEntry>();

public static void addEntitiesToSet(){
regCre(EntityBear.class, "BrownBear", 0x4F2900, 0x8E500E, 4, 1, 1, BiomeDictionary.getBiomes(Type.FOREST));
regCre(EntityBearNeutral.class, "BlackBear", 0x000000, 0x333333, 4, 1, 1, BiomeDictionary.getBiomes(Type.FOREST));
regCre(EntityBearNeutralKermode.class, "KermodeBear", 0xe8e8e8, 0xf7dabe, 2, 1, 1, BiomeDictionary.getBiomes(Type.FOREST));
regCre(EntityDeer.class, "Deer", 0x8e510b, 0xc6863b, 13, 1, 4, BiomeDictionary.getBiomes(Type.FOREST), BiomeDictionary.getBiomes(Type.MAGICAL));
regCre(EntityLammergeier.class, "Lammergeier", 0xd8d8d8, 0xd82b11, 5, 1, 2, BiomeDictionary.getBiomes(Type.HILLS), BiomeDictionary.getBiomes(Type.MOUNTAIN));
regCre(EntityFeralWolf.class, "FeralWolf", 0xbababa, 0x232323, 6, 1, 6, BiomeDictionary.getBiomes(Type.FOREST), BiomeDictionary.getBiomes(Type.MAGICAL), BiomeDictionary.getBiomes(Type.SPOOKY));
regCre(EntityCoyote.class, "Coyote", 0x866a31, 0xb69762, 20, 1, 6, BiomeDictionary.getBiomes(Type.SANDY), BiomeDictionary.getBiomes(Type.PLAINS));
regCre(EntityFox.class, "Fox", 0xe87422, 0x3f210c, 8, 1, 6, BiomeDictionary.getBiomes(Type.FOREST), BiomeDictionary.getBiomes(Type.MAGICAL));
registerNoEggOrSpawn(EntityTarantulaHair.class, "tarantulahair");
regMob(EntityTarantula.class, "Tarantula", 0x1e1e1e, 0x8c0c0c, 20, 1, 3, BiomeDictionary.getBiomes(Type.SANDY));
regMob(EntityHirschgeist.class, "Hirschgeist", 0xfffff, 0x00000, 1, 1, 1, BiomeDictionary.getBiomes(Type.FOREST));
}

@SideOnly(Side.CLIENT)
public static void initModels() {
registerRender(EntityBear.class, RenderBrownBear.FACTORY);
registerRender(EntityBearNeutral.class, RenderBlackBear.FACTORY);
registerRender(EntityBearNeutralKermode.class, RenderKermodeBear.FACTORY);
registerRender(EntityDeer.class, RenderDeer.FACTORY);
registerRender(EntityLammergeier.class, RenderLammergeier.FACTORY);
registerRender(EntityFeralWolf.class, RenderCustomWolf.FACTORY);
registerRender(EntityCoyote.class, RenderCoyote.FACTORY);
registerRender(EntityFox.class, RenderFox.FACTORY);
registerRender(EntityTarantulaHair.class, RenderTarantulaHair.FACTORY);
registerRender(EntityTarantula.class, RenderTarantula.FACTORY);
registerRender(EntityHirschgeist.class, RenderHirschgeist.FACTORY);
}

@SideOnly(Side.CLIENT)
public static void initModel(Class EntityClass, IRenderFactory FACTORY){
registerRender(EntityClass, FACTORY);
regCre(EntityHirschgeist.class, "Hirschgeist", 0xfffff, 0x00000, 1, 1, 1, BiomeDictionary.getBiomes(Type.FOREST));
}


//#################################################################################

public static void regCre(Class EntityClass, String entityNameIn, int solidColorIn, int spotColorIn, int prob, int min, int max, Set<Biome>... biomes){
register(EntityClass, entityNameIn, solidColorIn, spotColorIn);
registerCreatureSpawn(EntityClass, prob, min, max, biomes);
//initModel(EntityClass, FACTORY);
registerWithSpawnAndEgg(EntityClass, entityNameIn, solidColorIn, spotColorIn, EnumCreatureType.CREATURE, biomes);
}

public static void regMob(Class EntityClass, String entityNameIn, int solidColorIn, int spotColorIn, int prob, int min, int max, Set<Biome>... biomes){
register(EntityClass, entityNameIn, solidColorIn, spotColorIn);
registerMobSpawn(EntityClass, prob, min, max, biomes);
//initModel(EntityClass, FACTORY);
registerWithSpawnAndEgg(EntityClass, entityNameIn, solidColorIn, spotColorIn, EnumCreatureType.MONSTER, biomes);
}

public static void register(Class EntityClass, String entityNameIn, int solidColorIn, int spotColorIn){
EntityRegistry.registerModEntity(new ResourceLocation(Ref.MOD_ID + ":" + entityNameIn), EntityClass, entityNameIn, ++modEntities, BetterAnimalsPlusMod.mod, 64, 1, true, solidColorIn, spotColorIn);
}

public static void registerNoEgg(Class EntityClass, String entityNameIn){
EntityRegistry.registerModEntity(new ResourceLocation(Ref.MOD_ID + ":" + entityNameIn), EntityClass, entityNameIn, ++modEntities, BetterAnimalsPlusMod.mod, 64, 1, true);
}

public static void registerCreatureSpawn(Class EntityClass, int prob, int min, int max, Set<Biome>... biomes) {
public static void registerWithSpawnAndEgg(Class EntityClass, String entityNameIn, int solidColorIn, int spotColorIn, EnumCreatureType typeIn, Set<Biome>... biomes){
Set<Biome> biomesetAdd = new HashSet<>();
for(Set<Biome> biomeset : biomes) {
biomesetAdd.addAll(biomeset);
Expand All @@ -121,107 +92,55 @@ public static void registerCreatureSpawn(Class EntityClass, int prob, int min, i
biomesArray = new Biome[0];
}

/*for(Biome biome : biomesArray) {
List<SpawnListEntry> list = biome.getSpawnableList(EnumCreatureType.CREATURE);
int totalValue = 0;
int totalAmount = 0;
for(SpawnListEntry entry : list) {
totalValue += entry.itemWeight;
totalAmount++;
}
int prob2 = 0;
if(totalAmount != 0) {
prob2 = prob * ((totalValue) / totalAmount);
} else {
prob2 = prob;
}
boolean found = false;
for(SpawnListEntry entry : list) {
if (entry.entityClass == EntityClass)
{
entry.itemWeight = prob2;
entry.minGroupCount = min;
entry.maxGroupCount = max;
found = true;
break;
}
}
if (!found) {
list.add(new SpawnListEntry(EntityClass, prob2, min, max));
}
}*/
EntityRegistry.addSpawn(EntityClass, prob, min, max, EnumCreatureType.CREATURE, biomesArray);
}

public static void registerMobSpawn(Class EntityClass, int prob, int min, int max, Set<Biome>... biomes) {
Set<Biome> biomesetAdd = new HashSet<>();
for(Set<Biome> biomeset : biomes) {
biomesetAdd.addAll(biomeset);
}
Biome[] biomesArray = {};
try {
biomesArray = biomesetAdd.toArray(biomesArray);
} catch(NullPointerException e) {
biomesArray = new Biome[0];
}
EntityEntry entry = EntityEntryBuilder.create()
.entity(EntityClass)
.id(new ResourceLocation(Ref.MOD_ID, entityNameIn), modEntities++)
.name(entityNameIn)
.tracker(64, 1, true)
.egg(solidColorIn, spotColorIn)
.spawn(typeIn, 4, 1, 1, biomesArray)
.build();

entrySet.add(entry);
}

public static void registerNoEggOrSpawn(Class EntityClass, String entityNameIn){
EntityEntry entry = EntityEntryBuilder.create()
.entity(EntityClass)
.id(new ResourceLocation(Ref.MOD_ID, entityNameIn), modEntities++)
.name(entityNameIn)
.tracker(64, 1, true)
.build();

/*for(Biome biome : biomesArray) {
List<SpawnListEntry> list = biome.getSpawnableList(EnumCreatureType.MONSTER);
int totalValue = 0;
int totalAmount = 0;
for(SpawnListEntry entry : list) {
totalValue += entry.itemWeight;
totalAmount++;
}
int prob2 = 0;
if(totalAmount != 0) {
prob2 = prob * ((totalValue) / totalAmount);
} else {
prob2 = prob;
}
boolean found = false;
for(SpawnListEntry entry : list) {
if (entry.entityClass == EntityClass)
{
entry.itemWeight = prob2;
entry.minGroupCount = min;
entry.maxGroupCount = max;
found = true;
break;
}
}
if (!found) {
list.add(new SpawnListEntry(EntityClass, prob2, min, max));
}
}*/
EntityRegistry.addSpawn(EntityClass, prob, min, max, EnumCreatureType.MONSTER, biomesArray);
}
entrySet.add(entry);
}

@SideOnly(Side.CLIENT)
public static void registerRender(Class EntityClass, IRenderFactory RenderFactory){
RenderingRegistry.registerEntityRenderingHandler(EntityClass, RenderFactory);
}


//####################################################################################


@EventBusSubscriber(modid = Ref.MOD_ID)
public static class RegistrationHandler
{
/**
* Register this mod's {@link EntityEntry}s.
*
* @param event The event
*/
@SubscribeEvent
public static void onEvent(final RegistryEvent.Register<EntityEntry> event)
{
final IForgeRegistry<EntityEntry> registry = event.getRegistry();

MobRegistry.addEntitiesToSet();

for (final EntityEntry entityEntry : entrySet)
{
System.out.println("Registering entity: " + entityEntry.getName() + " " + entityEntry.getRegistryName());
registry.register(entityEntry);
}
}
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import its_meow.betteranimalsplus.client.renderer.TESR.RenderBlockHandOfFate;
import its_meow.betteranimalsplus.client.renderer.TESR.RenderBlockHirschgeistSkull;
import its_meow.betteranimalsplus.client.renderer.TESR.RenderBlockTrillium;
import its_meow.betteranimalsplus.client.renderer.entity.EntityRendererRegistry;
import its_meow.betteranimalsplus.common.tileentity.TileEntityHandOfFate;
import its_meow.betteranimalsplus.common.tileentity.TileEntityHirschgeistSkull;
import its_meow.betteranimalsplus.common.tileentity.TileEntityTrillium;
Expand All @@ -29,7 +30,7 @@ public class ClientProxy extends CommonProxy {
public void preInit(FMLPreInitializationEvent event) {
super.preInit(event);
MinecraftForge.EVENT_BUS.register(new EventHandlerClient());
MobRegistry.initModels();
EntityRendererRegistry.registerEntityRenderers();
}

public void init(FMLInitializationEvent event) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public class CommonProxy {


public void preInit(FMLPreInitializationEvent event) {
MobRegistry.init();

}

public void init(FMLInitializationEvent e) {
Expand Down

0 comments on commit 4671f20

Please sign in to comment.