Finished the new graves

This commit is contained in:
Adubbz 2013-07-10 08:27:36 +10:00
parent 278fcad81e
commit d160d58a44
5 changed files with 201 additions and 73 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

View File

@ -1,20 +1,16 @@
package biomesoplenty.blocks;
import java.util.ArrayList;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.particle.EffectRenderer;
import net.minecraft.client.particle.EntityDiggingFX;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import biomesoplenty.BiomesOPlenty;
import biomesoplenty.api.Blocks;
import biomesoplenty.blocks.renderers.RenderUtils;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockGrave extends Block
{
@ -29,29 +25,8 @@ public class BlockGrave extends Block
@Override
public void registerIcons(IconRegister iconRegister)
{
blockIcon = iconRegister.registerIcon("stone");
blockIcon = iconRegister.registerIcon("biomesoplenty:grave");
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack itemstack)
{
int o = ((MathHelper.floor_double((double)(entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3) + 2) % 4;
int fO;
if (o == 0 || o == 2)
{
fO = 0;
}
else
{
fO = 1;
}
if (!world.isRemote)
{
world.setBlockMetadataWithNotify(x, y, z, fO, 2);
}
}
@Override
public void setBlockBoundsBasedOnState(IBlockAccess world, int par2, int par3, int par4)
@ -61,14 +36,55 @@ public class BlockGrave extends Block
switch (meta)
{
case 0:
this.setBlockBounds(0.0F, 0.0F, 0.31F, 1.0F, 1.625F, 0.69F);
this.setBlockBounds(0.0F, 0.0F, 0.31F, 1.0F, 1.6875F, 0.69F);
break;
case 1:
this.setBlockBounds(0.0F, -1.0F, 0.31F, 1.0F, 0.625F, 0.69F);
this.setBlockBounds(0.0F, -1.0F, 0.31F, 1.0F, 0.6875F, 0.69F);
break;
case 2:
this.setBlockBounds(0.31F, 0.0F, 0.0F, 0.69F, 1.6875F, 1.0F);
break;
case 3:
this.setBlockBounds(0.31F, -1.0F, 0.0F, 0.69F, 0.6875F, 1.0F);
break;
}
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, int neighbourID)
{
if (neighbourID == Blocks.grave.get().blockID)
{
if (world.getBlockMetadata(x, y, z) == 0 || world.getBlockMetadata(x, y, z) == 2)
{
if (world.getBlockId(x, y + 1, z) != Blocks.grave.get().blockID)
{
world.destroyBlock(x, y, z, true);
}
}
else
{
if (world.getBlockId(x, y - 1, z) != Blocks.grave.get().blockID)
{
world.destroyBlock(x, y, z, true);
}
}
}
}
@Override
public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int meta, int fortune)
{
ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
if (meta == 0) ret.add(new ItemStack(Blocks.grave.get(), 1));
else if (meta == 2) ret.add(new ItemStack(Blocks.grave.get(), 1));
return ret;
}
@Override
public boolean renderAsNormalBlock()

View File

@ -2,7 +2,6 @@ package biomesoplenty.blocks.renderers;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.world.IBlockAccess;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
@ -56,6 +55,46 @@ public class GraveRenderer implements ISimpleBlockRenderingHandler
renderer.setRenderBounds(0, pixel*8, pixel*5, pixel*16, pixel*11, pixel*11);
renderer.renderStandardBlock(block, x, y, z);
}
else if (meta == 2)
{
//Base
renderer.setRenderBounds(pixel*5, 0, pixel*5, pixel*11, pixel*3, pixel*11);
renderer.renderStandardBlock(block, x, y, z);
//Base pole
renderer.setRenderBounds(pixel*6, pixel*3, pixel*6, pixel*10, pixel*11, pixel*10);
renderer.renderStandardBlock(block, x, y, z);
//Head horizontal bottom
renderer.setRenderBounds(pixel*5, pixel*11, 0, pixel*11, pixel*14, pixel*16);
renderer.renderStandardBlock(block, x, y, z);
}
else if (meta == 3)
{
//Head vertical side 0
renderer.setRenderBounds(pixel*5, pixel*-2, pixel*13, pixel*11, pixel*8, pixel*16);
renderer.renderStandardBlock(block, x, y, z);
//Head vertical side 1
renderer.setRenderBounds(pixel*5, pixel*-2, 0, pixel*11, pixel*8, pixel*3);
renderer.renderStandardBlock(block, x, y, z);
//Cross vertical side 1
renderer.setRenderBounds(pixel*7, pixel*-3, pixel*6, pixel*9, pixel*14, pixel*10);
renderer.renderStandardBlock(block, x, y, z);
//Head horizontal middle 0
renderer.setRenderBounds(pixel*7, pixel*1, pixel*-4, pixel*9, pixel*5, pixel*6);
renderer.renderStandardBlock(block, x, y, z);
//Head horizontal middle 1
renderer.setRenderBounds(pixel*7, pixel*1, pixel*10, pixel*9, pixel*5, pixel*20);
renderer.renderStandardBlock(block, x, y, z);
//Head horizontal top
renderer.setRenderBounds(pixel*5, pixel*8, 0, pixel*11, pixel*11, pixel*16);
renderer.renderStandardBlock(block, x, y, z);
}
}
return true;
}
@ -63,52 +102,12 @@ public class GraveRenderer implements ISimpleBlockRenderingHandler
@Override
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer)
{
if (modelID == RenderUtils.graveModel)
{
Tessellator tessellator = Tessellator.instance;
if (metadata == 0)
{
renderer.setRenderBounds(0.374F, 0.0F, 0.374F, 0.626F, 1.0F, 0.626F);
RenderUtils.renderStandardInvBlock(renderer, block, metadata);
}
else if (metadata == 1)
{
renderer.setRenderBounds(0.187F, 0.0F, 0.187F, 0.813F, 1.0F, 0.813F);
RenderUtils.renderStandardInvBlock(renderer, block, metadata);
}
else if (metadata == 3)
{
renderer.setRenderBounds(0.374F, 0.374F, 0.0F, 0.626F, 0.626F, 1.0F);
RenderUtils.renderStandardInvBlock(renderer, block, metadata);
}
else if (metadata == 4)
{
renderer.setRenderBounds(0.0F, 0.374F, 0.374F, 1.0F, 0.626F, 0.626F);
RenderUtils.renderStandardInvBlock(renderer, block, metadata);
}
else if (metadata == 5)
{
renderer.setRenderBounds(0.187F, 0.187F, 0.0F, 0.813F, 0.813F, 1.0F);
RenderUtils.renderStandardInvBlock(renderer, block, metadata);
}
else if (metadata == 6)
{
renderer.setRenderBounds(0.0F, 0.187F, 0.187F, 1.0F, 0.813F, 0.813F);
RenderUtils.renderStandardInvBlock(renderer, block, metadata);
}
else
{
renderer.setRenderBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
RenderUtils.renderStandardInvBlock(renderer, block, metadata);
}
}
}
@Override
public boolean shouldRender3DInInventory()
{
return true;
return false;
}
@Override

View File

@ -1,19 +1,132 @@
package biomesoplenty.itemblocks;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemBlockGrave extends ItemBlock
{
private Icon grave;
public ItemBlockGrave(int par1)
{
super(par1);
setMaxDamage(0);
setHasSubtypes(true);
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister iconRegister)
{
grave = iconRegister.registerIcon("biomesoplenty:item_grave");
}
@Override
public Icon getIconFromDamage(int meta)
{
return grave;
}
@Override
public int getMetadata(int meta)
{
return meta & 15;
}
@Override
public boolean onItemUse(ItemStack itemstack, EntityPlayer player, World world, int x, int y, int z, int side, float par8, float par9, float par10)
{
int id = world.getBlockId(x, y, z);
if (id == Block.snow.blockID && (world.getBlockMetadata(x, y, z) & 7) < 1)
{
side = 1;
}
else if (id != Block.vine.blockID && id != Block.tallGrass.blockID && id != Block.deadBush.blockID
&& (Block.blocksList[id] == null || !Block.blocksList[id].isBlockReplaceable(world, x, y, z)))
{
if (side == 0)
{
--y;
}
if (side == 1)
{
++y;
}
if (side == 2)
{
--z;
}
if (side == 3)
{
++z;
}
if (side == 4)
{
--x;
}
if (side == 5)
{
++x;
}
}
if (itemstack.stackSize == 0)
return false;
else if (!player.canPlayerEdit(x, y, z, side, itemstack))
return false;
else if (y == 255 && Block.blocksList[itemID].blockMaterial.isSolid())
return false;
else if (world.canPlaceEntityOnSide(itemID, x, y, z, false, side, player, itemstack))
{
Block block = Block.blocksList[itemID];
int o = ((MathHelper.floor_double((double)(player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3) + 2) % 4;
int fO;
if (o == 0 || o == 2)
{
fO = 0;
}
else
{
fO = 2;
}
if (placeGrave(itemstack, player, block, world, x, y, z, fO, side, par8, par9, par10)) return true;
}
return false;
}
private boolean placeGrave(ItemStack itemstack, EntityPlayer player, Block block, World world, int x, int y, int z, int meta, int side, float par8, float par9, float par10)
{
if (world.isAirBlock(x, y + 1, z))
{
int k1 = Block.blocksList[itemID].onBlockPlaced(world, x, y, z, side, par8, par9, par10, meta);
int k2 = Block.blocksList[itemID].onBlockPlaced(world, x, y, z, side, par8, par9, par10, meta + 1);
if (placeBlockAt(itemstack, player, world, x, y, z, side, par8, par9, par10, k1) && placeBlockAt(itemstack, player, world, x, y + 1, z, side, par8, par9, par10, k2))
{
world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, block.stepSound.getPlaceSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F);
--itemstack.stackSize;
}
return true;
}
return false;
}
}