package minefantasy.system;
import java.awt.Color;
import java.util.List;
import minefantasy.MineFantasyBase;
import minefantasy.entity.*;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityEggInfo;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EnumCreatureAttribute;
import net.minecraft.entity.EnumCreatureType;
import net.minecraft.entity.monster.EntityGiantZombie;
import net.minecraft.entity.monster.EntityPigZombie;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.biome.SpawnListEntry;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.common.EnumHelper;
import net.minecraftforge.common.BiomeDictionary.Type;
import cpw.mods.fml.common.registry.EntityRegistry;
public class EntitylistMF
{
public static int IDBase;
public static void init()
{
IDBase = cfg.entityIDBase;
addEntity(EntityHound.class, "HoundMF", Color.WHITE.hashCode(), MineFantasyBase.getColourForRGB(128, 64, 0));
addEntity(EntityMinotaur.class, "Minotaur", MineFantasyBase.getColourForRGB(70, 50, 28), Color.BLACK.hashCode());
addEntity(EntitySkeletalKnight.class, "SkeletalKnight", Color.GRAY.hashCode(), MineFantasyBase.getColourForRGB(100, 70, 70));
addEntity(EntityDragonSmall.class, "SmallDragon", Color.RED.hashCode(), MineFantasyBase.getColourForRGB(221, 218, 164));
addEntity(EntityDrake.class, "Drake", Color.GREEN.hashCode(), MineFantasyBase.getColourForRGB(221, 218, 164));
addEntity(EntityBasilisk.class, "Basilisk", Color.BLUE.hashCode(), MineFantasyBase.getColourForRGB(221, 218, 164));
EntityRegistry.registerModEntity(EntityBombThrown.class, "MFBomb", IDBase, MineFantasyBase.instance, 64, 1, true);IDBase ++;
EntityRegistry.registerModEntity(EntityFirebreath.class, "fireBreath", IDBase, MineFantasyBase.instance, 64, 20, true);IDBase ++;
EntityRegistry.registerModEntity(EntityArrowMF.class, "arrowMF", IDBase, MineFantasyBase.instance, 64, 20, false);IDBase ++;
EntityRegistry.registerModEntity(EntityBoltMF.class, "boltMF", IDBase, MineFantasyBase.instance, 64, 20, false);IDBase ++;
EntityRegistry.registerModEntity(EntityThrownSpear.class, "MFSpear", IDBase, MineFantasyBase.instance, 64, 20, false);
EntityRegistry.registerModEntity(EntityRockSling.class, "MFRock", IDBase, MineFantasyBase.instance, 64, 1, false);IDBase ++;
EntityRegistry.registerModEntity(EntityShrapnel.class, "shrapnelMF", IDBase, MineFantasyBase.instance, 64, 1, false);IDBase ++;
EntityRegistry.addSpawn(EntityHound.class, cfg.houndSpawnrate/2, 3, 3, EnumCreatureType.creature, BiomeGenBase.forest);
EntityRegistry.addSpawn(EntityHound.class, cfg.houndSpawnrate/2, 3, 3, EnumCreatureType.creature, BiomeGenBase.forestHills);
EntityRegistry.addSpawn(EntityHound.class, cfg.houndSpawnrate/3, 3, 3, EnumCreatureType.creature, BiomeGenBase.jungle);
EntityRegistry.addSpawn(EntityHound.class, cfg.houndSpawnrate/3, 3, 3, EnumCreatureType.creature, BiomeGenBase.jungleHills);
EntityRegistry.addSpawn(EntityDrake.class, cfg.drakeSpawnrate, 1, 3, EnumCreatureType.monster, BiomeGenBase.plains);
EntityRegistry.addSpawn(EntityDrake.class, cfg.drakeSpawnrate, 2, 2, EnumCreatureType.monster, BiomeGenBase.extremeHillsEdge);
EntityRegistry.addSpawn(EntityDrake.class, cfg.drakeSpawnrate, 2, 4, EnumCreatureType.monster, BiomeGenBase.extremeHills);
addSpawn(EntityHound.class, cfg.houndSpawnrate, 3, 5, EnumCreatureType.creature, Type.FOREST);
addSpawn(EntityDrake.class, cfg.drakeSpawnrate, 1, 3, EnumCreatureType.creature, Type.PLAINS);
addSpawn(EntitySkeletalKnight.class, cfg.knightSpawnrate, 1, 1, EnumCreatureType.monster);
addSpawn(EntityMinotaur.class, cfg.minotaurSpawnrate, 1, 2, EnumCreatureType.monster);
addSpawn(EntityDragonSmall.class, 1, 1, 1, EnumCreatureType.creature, Type.MOUNTAIN);
addSpawn(EntityBasilisk.class, cfg.basilSpawnrate, 1, 1, EnumCreatureType.monster);
addSpawn(EntityBasilisk.class, cfg.basilSpawnrateNether, 1, 1, EnumCreatureType.monster, Type.NETHER);
addSpawn(EntityMinotaur.class, cfg.minotaurSpawnrate*5, 2, 8, EnumCreatureType.monster, Type.NETHER);
addSpawn(EntityDragonSmall.class, cfg.dragonSpawnrateNether, 1, 2, EnumCreatureType.monster, Type.NETHER);
addSpawn(EntityDragonSmall.class, 2, 1, 1, EnumCreatureType.monster, Type.MOUNTAIN);
}
private static void addEntity(Class<? extends Entity> entityClass, String entityName, int eggColor, int eggDotsColor)
{
if (MineFantasyBase.isDebug())
{
System.out.println("MineFantasy: registerEntity " + entityClass + " with Mod ID " + IDBase);
}
EntityRegistry.registerModEntity(entityClass, entityName, IDBase, MineFantasyBase.instance, 128, 1, true);
EntityList.entityEggs.put(Integer.valueOf(IDBase), new EntityEggInfo(IDBase, eggColor, eggDotsColor));
EntityList.addMapping(entityClass, entityName, IDBase);
IDBase++;
}
public static void addSpawn(Class <? extends EntityLiving > entityClass, int weightedProb, int min, int max, EnumCreatureType typeOfCreature)
{
for (BiomeGenBase biome : BiomeGenBase.biomeList)
{
if(biome != null)
{
if(BiomeDictionary.isBiomeRegistered(biome))
{
if(BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.END))
{
return;
}
if(BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.NETHER))
{
return;
}
if(BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.MUSHROOM))
{
return;
}
}
EntityRegistry.addSpawn(entityClass, weightedProb, min, max, typeOfCreature, biome);
}
}
}
public static void addSpawn(Class <? extends EntityLiving > entityClass, int weightedProb, int min, int max, EnumCreatureType typeOfCreature, BiomeDictionary.Type type)
{
for (BiomeGenBase biome : BiomeGenBase.biomeList)
{
if(biome != null)
{
if(BiomeDictionary.isBiomeRegistered(biome))
{
if(BiomeDictionary.isBiomeOfType(biome, type))
{
EntityRegistry.addSpawn(entityClass, weightedProb, min, max, typeOfCreature, biome);
}
}
}
}
}
}