Search in sources :

Example 1 with IRandomMobProvider

use of powercrystals.minefactoryreloaded.api.IRandomMobProvider in project MineFactoryReloaded by powercrystals.

the class ItemSafariNet method spawnCreature.

private static Entity spawnCreature(World world, NBTTagCompound mobTag, double x, double y, double z, int side) {
    Entity e;
    if (mobTag.getBoolean("hide")) {
        List<RandomMob> mobs = new ArrayList<RandomMob>();
        for (IRandomMobProvider p : MFRRegistry.getRandomMobProviders()) {
            System.out.println("Adding mobs from " + p.getClass().getName());
            mobs.addAll(p.getRandomMobs(world));
        }
        e = ((RandomMob) WeightedRandom.getRandomItem(world.rand, mobs)).getMob();
    } else {
        NBTTagList pos = mobTag.getTagList("Pos");
        ((NBTTagDouble) pos.tagAt(0)).data = x;
        ((NBTTagDouble) pos.tagAt(1)).data = y;
        ((NBTTagDouble) pos.tagAt(2)).data = z;
        e = EntityList.createEntityFromNBT(mobTag, world);
        if (e != null) {
            if (e instanceof EntityLiving) {
                ((EntityLiving) e).initCreature();
            }
            e.readFromNBT(mobTag);
        }
    }
    if (e != null) {
        int offsetX = Facing.offsetsXForSide[side];
        int offsetY = side == 0 ? -1 : 0;
        int offsetZ = Facing.offsetsZForSide[side];
        AxisAlignedBB bb = e.boundingBox;
        e.setLocationAndAngles(x + (bb.maxX - bb.minX) * 0.5 * offsetX, y + (bb.maxY - bb.minY) * 0.5 * offsetY, z + (bb.maxZ - bb.minZ) * 0.5 * offsetZ, world.rand.nextFloat() * 360.0F, 0.0F);
        world.spawnEntityInWorld(e);
        if (e instanceof EntityLiving) {
            ((EntityLiving) e).playLivingSound();
        }
        Entity riddenByEntity = e.riddenByEntity;
        while (riddenByEntity != null) {
            riddenByEntity.setLocationAndAngles(x, y, z, world.rand.nextFloat() * 360.0F, 0.0F);
            world.spawnEntityInWorld(riddenByEntity);
            if (riddenByEntity instanceof EntityLiving) {
                ((EntityLiving) riddenByEntity).playLivingSound();
            }
            riddenByEntity = riddenByEntity.riddenByEntity;
        }
    }
    return e;
}
Also used : NBTTagList(net.minecraft.nbt.NBTTagList) AxisAlignedBB(net.minecraft.util.AxisAlignedBB) Entity(net.minecraft.entity.Entity) RandomMob(powercrystals.minefactoryreloaded.api.RandomMob) EntityLiving(net.minecraft.entity.EntityLiving) ArrayList(java.util.ArrayList) IRandomMobProvider(powercrystals.minefactoryreloaded.api.IRandomMobProvider)

Aggregations

ArrayList (java.util.ArrayList)1 Entity (net.minecraft.entity.Entity)1 EntityLiving (net.minecraft.entity.EntityLiving)1 NBTTagList (net.minecraft.nbt.NBTTagList)1 AxisAlignedBB (net.minecraft.util.AxisAlignedBB)1 IRandomMobProvider (powercrystals.minefactoryreloaded.api.IRandomMobProvider)1 RandomMob (powercrystals.minefactoryreloaded.api.RandomMob)1