Added hive sub-blocks, tweaked hive generation
|
@ -1,30 +1,92 @@
|
||||||
package biomesoplenty.blocks;
|
package biomesoplenty.blocks;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.texture.IconRegister;
|
import net.minecraft.client.renderer.texture.IconRegister;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.tileentity.TileEntityMobSpawner;
|
||||||
|
import net.minecraft.util.Icon;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
import biomesoplenty.BiomesOPlenty;
|
import biomesoplenty.BiomesOPlenty;
|
||||||
import biomesoplenty.api.Items;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
|
||||||
|
|
||||||
public class BlockHive extends Block
|
public class BlockHive extends Block
|
||||||
{
|
{
|
||||||
|
private static final String[] hiveTypes = new String[] {"honeycomb", "honeycombspawner", "hive", "hivespawner"};
|
||||||
|
private Icon[] textures;
|
||||||
|
|
||||||
public BlockHive(int par1)
|
public BlockHive(int par1)
|
||||||
{
|
{
|
||||||
super(par1, Material.wood);
|
super(par1, Material.wood);
|
||||||
this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty);
|
this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
public void registerIcons(IconRegister par1IconRegister)
|
* Returns a new instance of a block's tile entity class. Called on placing the block.
|
||||||
|
*/
|
||||||
|
public TileEntity createNewTileEntity(World par1World)
|
||||||
{
|
{
|
||||||
blockIcon = par1IconRegister.registerIcon("biomesoplenty:hive");
|
return new TileEntityMobSpawner();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerIcons(IconRegister iconRegister)
|
||||||
|
{
|
||||||
|
textures = new Icon[hiveTypes.length];
|
||||||
|
|
||||||
|
for (int i = 0; i < hiveTypes.length; ++i) {
|
||||||
|
textures[i] = iconRegister.registerIcon("biomesoplenty:"+hiveTypes[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Icon getIcon(int side, int meta)
|
||||||
|
{
|
||||||
|
return textures[meta];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < hiveTypes.length; ++i) {
|
||||||
|
list.add(new ItemStack(blockID, 1, i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int damageDropped(int meta)
|
||||||
|
{
|
||||||
|
if (meta == 1) {
|
||||||
|
meta = 0;
|
||||||
|
}
|
||||||
|
if (meta == 3) {
|
||||||
|
meta = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return meta;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getFlammability(IBlockAccess world, int x, int y, int z, int metadata, ForgeDirection face)
|
||||||
|
{
|
||||||
|
super.setBurnProperties(blockID, 2, 4);
|
||||||
|
return blockFlammability[blockID];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getFireSpreadSpeed(World world, int x, int y, int z, int metadata, ForgeDirection face)
|
||||||
|
{
|
||||||
|
return blockFireSpreadSpeed[blockID];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFlammable(IBlockAccess world, int x, int y, int z, int metadata, ForgeDirection face)
|
||||||
|
{
|
||||||
|
return getFlammability(world, x, y, z, metadata, face) > 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -64,6 +64,7 @@ import biomesoplenty.itemblocks.ItemBlockFoliage;
|
||||||
import biomesoplenty.itemblocks.ItemBlockGlass;
|
import biomesoplenty.itemblocks.ItemBlockGlass;
|
||||||
import biomesoplenty.itemblocks.ItemBlockGrass;
|
import biomesoplenty.itemblocks.ItemBlockGrass;
|
||||||
import biomesoplenty.itemblocks.ItemBlockGrave;
|
import biomesoplenty.itemblocks.ItemBlockGrave;
|
||||||
|
import biomesoplenty.itemblocks.ItemBlockHive;
|
||||||
import biomesoplenty.itemblocks.ItemBlockLeaves;
|
import biomesoplenty.itemblocks.ItemBlockLeaves;
|
||||||
import biomesoplenty.itemblocks.ItemBlockLog;
|
import biomesoplenty.itemblocks.ItemBlockLog;
|
||||||
import biomesoplenty.itemblocks.ItemBlockMoss;
|
import biomesoplenty.itemblocks.ItemBlockMoss;
|
||||||
|
@ -264,7 +265,7 @@ public class BOPBlocks
|
||||||
GameRegistry.registerBlock(Blocks.moss.get(), ItemBlockMoss.class, "bop.moss");
|
GameRegistry.registerBlock(Blocks.moss.get(), ItemBlockMoss.class, "bop.moss");
|
||||||
GameRegistry.registerBlock(Blocks.cragRock.get(), "bop.cragRock");
|
GameRegistry.registerBlock(Blocks.cragRock.get(), "bop.cragRock");
|
||||||
GameRegistry.registerBlock(Blocks.cloud.get(), "bop.cloud");
|
GameRegistry.registerBlock(Blocks.cloud.get(), "bop.cloud");
|
||||||
GameRegistry.registerBlock(Blocks.hive.get(), "bop.hive");
|
GameRegistry.registerBlock(Blocks.hive.get(), ItemBlockHive.class, "bop.hive");
|
||||||
|
|
||||||
GameRegistry.registerBlock(Blocks.bones.get(), ItemBlockBones.class, "bop.bones");
|
GameRegistry.registerBlock(Blocks.bones.get(), ItemBlockBones.class, "bop.bones");
|
||||||
GameRegistry.registerBlock(Blocks.glass.get(), ItemBlockGlass.class, "bop.glass");
|
GameRegistry.registerBlock(Blocks.glass.get(), ItemBlockGlass.class, "bop.glass");
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
package biomesoplenty.itemblocks;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemBlock;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class ItemBlockHive extends ItemBlock
|
||||||
|
{
|
||||||
|
private static final String[] types = new String[] {"honeycomb", "honeycombspawner", "hive", "hivespawner"};
|
||||||
|
|
||||||
|
public ItemBlockHive(int par1)
|
||||||
|
{
|
||||||
|
super(par1);
|
||||||
|
setMaxDamage(0);
|
||||||
|
setHasSubtypes(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMetadata(int meta)
|
||||||
|
{
|
||||||
|
return meta & 15;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUnlocalizedName(ItemStack itemstack) {
|
||||||
|
int meta = itemstack.getItemDamage();
|
||||||
|
if (meta < 0 || meta >= types.length) {
|
||||||
|
meta = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.getUnlocalizedName() + "." + types[meta];
|
||||||
|
}
|
||||||
|
}
|
|
@ -24,41 +24,50 @@ public class WorldGenHive extends WorldGenerator
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int cubeno = 0; cubeno < 3; cubeno++)
|
for (int cubeno = 0; cubeno < 4; cubeno++)
|
||||||
{
|
{
|
||||||
float chance = 0.0F;
|
float chance = 0.0F;
|
||||||
|
int meta = 0;
|
||||||
|
|
||||||
switch (cubeno)
|
switch (cubeno)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
chance = 0.25F;
|
chance = 0.25F;
|
||||||
|
meta = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
chance = 1.0F;
|
chance = 1.0F;
|
||||||
|
meta = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
|
chance = 1.0F;
|
||||||
|
meta = 2;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
chance = 0.5F;
|
chance = 0.5F;
|
||||||
|
meta = 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int honeychance = rand.nextInt(2);
|
int honeychance = rand.nextInt(2);
|
||||||
|
|
||||||
//Top
|
//Top
|
||||||
generateHiveCubeSmall(world, x, y + cubeno, z, (baseHeight - 8) + (cubeno * 2), (baseWidth - 1) + cubeno, cubeno, chance);
|
generateHiveCubeSmall(world, x, y + cubeno, z, (baseHeight - 11) + (cubeno * 2), (baseWidth - 1) + cubeno, cubeno, chance, meta);
|
||||||
|
|
||||||
//Middle
|
//Middle
|
||||||
generateHiveCube(world, x, (y - 2) + cubeno, z, baseHeight + (cubeno * 2), baseWidth + cubeno, cubeno, chance, honeychance);
|
generateHiveCube(world, x, (y - 2) + cubeno, z, baseHeight + (cubeno * 2), baseWidth + cubeno, cubeno, chance, honeychance, meta);
|
||||||
|
|
||||||
//Bottom
|
//Bottom
|
||||||
generateHiveCubeSmall(world, x, (y - (baseHeight + 4)) + cubeno, z, (baseHeight - 8) + (cubeno * 2), (baseWidth - 1) + cubeno, cubeno, chance);
|
generateHiveCubeSmall(world, x, (y - (baseHeight + 6)) + cubeno, z, (baseHeight - 10) + (cubeno * 2), (baseWidth - 1) + cubeno, cubeno, chance, meta);
|
||||||
|
|
||||||
//Bottom 2
|
//Bottom 2
|
||||||
generateHiveCubeSmall(world, x, (y - (baseHeight + 5)) + cubeno, z, (baseHeight - 7) + (cubeno * 2), (baseWidth - 2) + cubeno, cubeno, chance);
|
generateHiveCubeSmall(world, x, (y - (baseHeight + 7)) + cubeno, z, (baseHeight - 9) + (cubeno * 2), (baseWidth - 2) + cubeno, cubeno, chance, meta);
|
||||||
|
|
||||||
//Bottom 3
|
//Bottom 3
|
||||||
generateHiveCubeSmall(world, x, (y - (baseHeight + 7)) + cubeno, z, (baseHeight - 7) + (cubeno * 2), (baseWidth - 4) + cubeno, cubeno, chance);
|
generateHiveCubeSmall(world, x, (y - (baseHeight + 9)) + cubeno, z, (baseHeight - 9) + (cubeno * 2), (baseWidth - 4) + cubeno, cubeno, chance, meta);
|
||||||
|
|
||||||
spawnWasps(world, rand, x, y, z, 15);
|
spawnWasps(world, rand, x, y, z, 15);
|
||||||
}
|
}
|
||||||
|
@ -66,7 +75,7 @@ public class WorldGenHive extends WorldGenerator
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void generateHiveCube(World world, int origx, int origy, int origz, int height, int width, int cubeno, float chance, int honeychance)
|
public void generateHiveCube(World world, int origx, int origy, int origz, int height, int width, int cubeno, float chance, int honeychance, int meta)
|
||||||
{
|
{
|
||||||
for (int hLayer = 0; hLayer < height; hLayer++)
|
for (int hLayer = 0; hLayer < height; hLayer++)
|
||||||
{
|
{
|
||||||
|
@ -74,30 +83,33 @@ public class WorldGenHive extends WorldGenerator
|
||||||
{
|
{
|
||||||
for (int j = -width; j < width; j++)
|
for (int j = -width; j < width; j++)
|
||||||
{
|
{
|
||||||
if ((hLayer == 0 || hLayer == (height - 1)) && (world.rand.nextFloat() <= chance)) world.setBlock(origx + i, origy - hLayer, origz + j, Blocks.hive.get().blockID);
|
if ((hLayer == 0 || hLayer == (height - 1)) && (world.rand.nextFloat() <= chance)) world.setBlock(origx + i, origy - hLayer, origz + j, Blocks.hive.get().blockID, meta, 2);
|
||||||
else if ((i == -width || i == (width - 1) || j == -width || j == (width - 1)) && (world.rand.nextFloat() <= chance)) world.setBlock(origx + i, origy - hLayer, origz + j, Blocks.hive.get().blockID);
|
else if ((i == -width || i == (width - 1) || j == -width || j == (width - 1)) && (world.rand.nextFloat() <= chance)) world.setBlock(origx + i, origy - hLayer, origz + j, Blocks.hive.get().blockID, meta, 2);
|
||||||
|
|
||||||
if (hLayer > (height / 2))
|
if (hLayer > (height / 2))
|
||||||
{
|
{
|
||||||
if (honeychance == 0)
|
if (honeychance == 0)
|
||||||
{
|
{
|
||||||
if (cubeno < 2 && world.getBlockId(origx + i, origy - hLayer, origz + j) != Blocks.hive.get().blockID) world.setBlock(origx + i, origy - hLayer, origz + j, Fluids.honey.get().blockID);
|
if (cubeno < 2 && world.getBlockId(origx + i, origy - hLayer, origz + j) != Blocks.hive.get().blockID) world.setBlock(origx + i, origy - hLayer, origz + j, Fluids.honey.get().blockID);
|
||||||
|
if (cubeno < 2 && world.getBlockId(origx + i, origy - hLayer, origz + j) == Blocks.hive.get().blockID && world.getBlockMetadata(origx + i, origy - hLayer, origz + j) != 0) world.setBlock(origx + i, origy - hLayer, origz + j, Fluids.honey.get().blockID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (cubeno < 2 && world.getBlockId(origx + i, origy - hLayer, origz + j) != Blocks.hive.get().blockID) world.setBlockToAir(origx + i, origy - hLayer, origz + j);
|
if (cubeno < 2 && world.getBlockId(origx + i, origy - hLayer, origz + j) != Blocks.hive.get().blockID) world.setBlockToAir(origx + i, origy - hLayer, origz + j);
|
||||||
|
if (cubeno < 2 && world.getBlockId(origx + i, origy - hLayer, origz + j) == Blocks.hive.get().blockID && world.getBlockMetadata(origx + i, origy - hLayer, origz + j) != 0) world.setBlockToAir(origx + i, origy - hLayer, origz + j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (cubeno < 2 && world.getBlockId(origx + i, origy - hLayer, origz + j) != Blocks.hive.get().blockID) world.setBlockToAir(origx + i, origy - hLayer, origz + j);
|
if (cubeno < 2 && world.getBlockId(origx + i, origy - hLayer, origz + j) != Blocks.hive.get().blockID) world.setBlockToAir(origx + i, origy - hLayer, origz + j);
|
||||||
|
if (cubeno < 2 && world.getBlockId(origx + i, origy - hLayer, origz + j) == Blocks.hive.get().blockID && world.getBlockMetadata(origx + i, origy - hLayer, origz + j) != 0) world.setBlockToAir(origx + i, origy - hLayer, origz + j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void generateHiveCubeSmall(World world, int origx, int origy, int origz, int height, int width, int cubeno, float chance)
|
public void generateHiveCubeSmall(World world, int origx, int origy, int origz, int height, int width, int cubeno, float chance, int meta)
|
||||||
{
|
{
|
||||||
for (int hLayer = 0; hLayer < height; hLayer++)
|
for (int hLayer = 0; hLayer < height; hLayer++)
|
||||||
{
|
{
|
||||||
|
@ -105,8 +117,8 @@ public class WorldGenHive extends WorldGenerator
|
||||||
{
|
{
|
||||||
for (int j = -width; j < width; j++)
|
for (int j = -width; j < width; j++)
|
||||||
{
|
{
|
||||||
if ((hLayer == 0 || hLayer == (height - 1)) && (world.rand.nextFloat() <= chance)) world.setBlock(origx + i, origy - hLayer, origz + j, Blocks.hive.get().blockID);
|
if ((hLayer == 0 || hLayer == (height - 1)) && (world.rand.nextFloat() <= chance)) world.setBlock(origx + i, origy - hLayer, origz + j, Blocks.hive.get().blockID, meta, 2);
|
||||||
else if ((i == -width || i == (width - 1) || j == -width || j == (width - 1)) && (world.rand.nextFloat() <= chance)) world.setBlock(origx + i, origy - hLayer, origz + j, Blocks.hive.get().blockID);
|
else if ((i == -width || i == (width - 1) || j == -width || j == (width - 1)) && (world.rand.nextFloat() <= chance)) world.setBlock(origx + i, origy - hLayer, origz + j, Blocks.hive.get().blockID, meta, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -122,7 +134,21 @@ public class WorldGenHive extends WorldGenerator
|
||||||
|
|
||||||
if (world.getBlockId(spawnx, spawny, spawnz) == Blocks.hive.get().blockID)
|
if (world.getBlockId(spawnx, spawny, spawnz) == Blocks.hive.get().blockID)
|
||||||
{
|
{
|
||||||
world.setBlock(spawnx, spawny, spawnz, Block.mobSpawner.blockID);
|
if (world.getBlockMetadata(spawnx, spawny, spawnz) == 0)
|
||||||
|
{
|
||||||
|
world.setBlock(spawnx, spawny, spawnz, Blocks.hive.get().blockID, 1, 0);
|
||||||
|
|
||||||
|
TileEntityMobSpawner tileentitymobspawner = (TileEntityMobSpawner)world.getBlockTileEntity(spawnx, spawny, spawnz);
|
||||||
|
|
||||||
|
if (tileentitymobspawner != null)
|
||||||
|
{
|
||||||
|
tileentitymobspawner.getSpawnerLogic().setMobID("BiomesOPlenty.Wasp");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (world.getBlockMetadata(spawnx, spawny, spawnz) == 2)
|
||||||
|
{
|
||||||
|
world.setBlock(spawnx, spawny, spawnz, Blocks.hive.get().blockID, 3, 0);
|
||||||
|
|
||||||
TileEntityMobSpawner tileentitymobspawner = (TileEntityMobSpawner)world.getBlockTileEntity(spawnx, spawny, spawnz);
|
TileEntityMobSpawner tileentitymobspawner = (TileEntityMobSpawner)world.getBlockTileEntity(spawnx, spawny, spawnz);
|
||||||
|
|
||||||
|
@ -134,3 +160,4 @@ public class WorldGenHive extends WorldGenerator
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -157,7 +157,10 @@ tile.bop.moss.name=Moss
|
||||||
|
|
||||||
tile.bop.cloud.name=Cloud Block
|
tile.bop.cloud.name=Cloud Block
|
||||||
|
|
||||||
tile.bop.hive.name=Hive
|
tile.bop.hive.honeycomb.name=Honeycomb Block
|
||||||
|
tile.bop.hive.honeycombspawner.name=Honeycomb Wasp Spawner
|
||||||
|
tile.bop.hive.hive.name=Hive Block
|
||||||
|
tile.bop.hive.hivespawner.name=Hive Wasp Spawner
|
||||||
|
|
||||||
tile.bop.bones.bones_small.name=Small Bone Segment
|
tile.bop.bones.bones_small.name=Small Bone Segment
|
||||||
tile.bop.bones.bones_medium.name=Medium Bone Segment
|
tile.bop.bones.bones_medium.name=Medium Bone Segment
|
||||||
|
|
Before Width: | Height: | Size: 697 B After Width: | Height: | Size: 755 B |
Before Width: | Height: | Size: 756 B After Width: | Height: | Size: 709 B |
After Width: | Height: | Size: 697 B |
Before Width: | Height: | Size: 663 B After Width: | Height: | Size: 663 B |
After Width: | Height: | Size: 756 B |