diff --git a/MODSRC/vazkii/botania/common/block/BlockOpenCrate.java b/MODSRC/vazkii/botania/common/block/BlockOpenCrate.java index aebea3671..f091992e9 100644 --- a/MODSRC/vazkii/botania/common/block/BlockOpenCrate.java +++ b/MODSRC/vazkii/botania/common/block/BlockOpenCrate.java @@ -11,9 +11,15 @@ */ package vazkii.botania.common.block; +import java.util.List; + +import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; @@ -22,13 +28,19 @@ import vazkii.botania.api.lexicon.ILexiconable; import vazkii.botania.api.lexicon.LexiconEntry; import vazkii.botania.client.core.helper.IconHelper; import vazkii.botania.common.block.tile.TileOpenCrate; +import vazkii.botania.common.item.block.ItemBlockWithMetadataAndName; import vazkii.botania.common.lexicon.LexiconData; import vazkii.botania.common.lib.LibBlockNames; public class BlockOpenCrate extends BlockModContainer implements ILexiconable { + IIcon iconSide; IIcon iconBottom; - + IIcon iconSideCraft; + IIcon iconBottomCraft; + + private static final int SUBTYPES = 2; + public BlockOpenCrate() { super(Material.wood); setHardness(2.0F); @@ -36,15 +48,39 @@ public class BlockOpenCrate extends BlockModContainer implements ILexiconable { setBlockName(LibBlockNames.OPEN_CRATE); } + @Override + protected boolean shouldRegisterInNameSet() { + return false; + } + + @Override + public Block setBlockName(String par1Str) { + GameRegistry.registerBlock(this, ItemBlockWithMetadataAndName.class, par1Str); + return super.setBlockName(par1Str); + } + + @Override + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + for(int i = 0; i < SUBTYPES; i++) + par3List.add(new ItemStack(par1, 1, i)); + } + + @Override + public int damageDropped(int meta) { + return meta; + } + @Override public void registerBlockIcons(IIconRegister par1IconRegister) { - blockIcon = IconHelper.forBlock(par1IconRegister, this, 0); + iconSide = IconHelper.forBlock(par1IconRegister, this, 0); iconBottom = IconHelper.forBlock(par1IconRegister, this, 1); + iconSideCraft = IconHelper.forBlock(par1IconRegister, this, 2); + iconBottomCraft = IconHelper.forBlock(par1IconRegister, this, 3); } @Override public IIcon getIcon(int side, int meta) { - return side == 0 ? iconBottom : blockIcon; + return meta == 0 ? side == 0 ? iconBottom : iconSide : side == 0 ? iconBottomCraft : iconSideCraft; } @Override diff --git a/MODSRC/vazkii/botania/common/block/tile/TileOpenCrate.java b/MODSRC/vazkii/botania/common/block/tile/TileOpenCrate.java index 25c4d81af..bd1478e74 100644 --- a/MODSRC/vazkii/botania/common/block/tile/TileOpenCrate.java +++ b/MODSRC/vazkii/botania/common/block/tile/TileOpenCrate.java @@ -38,24 +38,29 @@ public class TileOpenCrate extends TileSimpleInventory { redstone = true; } - Block blockBelow = worldObj.getBlock(xCoord, yCoord - 1, zCoord); - if(blockBelow.isAir(worldObj, xCoord, yCoord - 1, zCoord)) { + if(canRelease()) { ItemStack stack = getStackInSlot(0); - if(stack != null) { - EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord - 0.5, zCoord + 0.5, stack); - item.motionX = 0; - item.motionY = 0; - item.motionZ = 0; - - if(redstone) - item.age = -200; - - setInventorySlotContents(0, null); - if(!worldObj.isRemote) - worldObj.spawnEntityInWorld(item); - } + if(stack != null) + release(stack, redstone); } } + + public boolean canRelease() { + Block blockBelow = worldObj.getBlock(xCoord, yCoord - 1, zCoord); + return blockBelow.isAir(worldObj, xCoord, yCoord - 1, zCoord); + } + public void release(ItemStack stack, boolean redstone) { + EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord - 0.5, zCoord + 0.5, stack); + item.motionX = 0; + item.motionY = 0; + item.motionZ = 0; + if(redstone) + item.age = -200; + + setInventorySlotContents(0, null); + if(!worldObj.isRemote) + worldObj.spawnEntityInWorld(item); + } } diff --git a/resources/assets/botania/lang/en_US.lang b/resources/assets/botania/lang/en_US.lang index c361eba05..cd8f92199 100644 --- a/resources/assets/botania/lang/en_US.lang +++ b/resources/assets/botania/lang/en_US.lang @@ -251,7 +251,8 @@ tile.botania:enchanter.name=Mana Enchanter tile.botania:turntable.name=Spreader Turntable tile.botania:tinyPlanetBlock.name=Tiny Planet tile.botania:alchemyCatalyst.name=Alchemy Catalyst -tile.botania:openCrate.name=Open Crate +tile.botania:openCrate0.name=Open Crate +tile.botania:openCrate1.name=Crafty Crate tile.botania:forestEye.name=Eye of the Ancients tile.botania:storage0.name=Block of Manasteel tile.botania:storage1.name=Block of Terrasteel diff --git a/resources/assets/botania/textures/blocks/craftCrate0.png b/resources/assets/botania/textures/blocks/openCrate2.png similarity index 100% rename from resources/assets/botania/textures/blocks/craftCrate0.png rename to resources/assets/botania/textures/blocks/openCrate2.png diff --git a/resources/assets/botania/textures/blocks/craftCrate1.png b/resources/assets/botania/textures/blocks/openCrate3.png similarity index 100% rename from resources/assets/botania/textures/blocks/craftCrate1.png rename to resources/assets/botania/textures/blocks/openCrate3.png