Fix up potential to leak lots of guide books into the world. You only get one with a
new chest, not one you've already built.
This commit is contained in:
parent
3df6d36373
commit
32c6389b4e
|
@ -13,9 +13,12 @@ package cpw.mods.ironchest;
|
|||
import static net.minecraftforge.common.ForgeDirection.DOWN;
|
||||
import static net.minecraftforge.common.ForgeDirection.UP;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IconRegister;
|
||||
|
@ -95,6 +98,15 @@ public class BlockIronChest extends BlockContainer {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int metadata, int fortune)
|
||||
{
|
||||
ArrayList<ItemStack> items = Lists.newArrayList();
|
||||
ItemStack stack = new ItemStack(this,1,metadata);
|
||||
IronChestType.values()[IronChestType.validateMeta(metadata)].adornItemDrop(stack);
|
||||
items.add(stack);
|
||||
return items;
|
||||
}
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer player, int i1, float f1, float f2, float f3)
|
||||
{
|
||||
|
@ -150,7 +162,9 @@ public class BlockIronChest extends BlockContainer {
|
|||
TileEntity te = world.getBlockTileEntity(i, j, k);
|
||||
if (te != null && te instanceof TileEntityIronChest)
|
||||
{
|
||||
((TileEntityIronChest) te).setFacing(chestFacing);
|
||||
TileEntityIronChest teic = (TileEntityIronChest) te;
|
||||
teic.wasPlaced(entityliving, itemStack);
|
||||
teic.setFacing(chestFacing);
|
||||
world.markBlockForUpdate(i, j, k);
|
||||
}
|
||||
}
|
||||
|
@ -167,6 +181,7 @@ public class BlockIronChest extends BlockContainer {
|
|||
TileEntityIronChest tileentitychest = (TileEntityIronChest) world.getBlockTileEntity(i, j, k);
|
||||
if (tileentitychest != null)
|
||||
{
|
||||
tileentitychest.removeAdornments();
|
||||
dropContent(0, tileentitychest, world, tileentitychest.xCoord, tileentitychest.yCoord, tileentitychest.zCoord);
|
||||
}
|
||||
super.breakBlock(world, i, j, k, i1, i2);
|
||||
|
|
|
@ -20,6 +20,7 @@ import net.minecraft.inventory.IInventory;
|
|||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagByte;
|
||||
import net.minecraft.util.Icon;
|
||||
import net.minecraftforge.oredict.ShapedOreRecipe;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
|
@ -254,4 +255,11 @@ public enum IronChestType {
|
|||
{
|
||||
return itemFilter == null || itemstack == null || itemstack.getItem() == itemFilter;
|
||||
}
|
||||
public void adornItemDrop(ItemStack item)
|
||||
{
|
||||
if (this == DIRTCHEST9000)
|
||||
{
|
||||
item.setTagInfo("dirtchest", new NBTTagByte("",(byte) 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package cpw.mods.ironchest;
|
|||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
|
@ -24,6 +25,21 @@ public class TileEntityDirtChest extends TileEntityIronChest {
|
|||
}
|
||||
public TileEntityDirtChest() {
|
||||
super(IronChestType.DIRTCHEST9000);
|
||||
setInventorySlotContents(0, dirtChest9000GuideBook.copy());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void wasPlaced(EntityLivingBase entityliving, ItemStack itemStack)
|
||||
{
|
||||
if (!(itemStack.hasTagCompound() && itemStack.getTagCompound().getBoolean("dirtchest"))) {
|
||||
setInventorySlotContents(0, dirtChest9000GuideBook.copy());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAdornments()
|
||||
{
|
||||
if (chestContents[0] != null && chestContents[0].isItemEqual(dirtChest9000GuideBook)) {
|
||||
chestContents[0] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import java.util.Comparator;
|
|||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
@ -514,4 +515,13 @@ public class TileEntityIronChest extends TileEntity implements IInventory {
|
|||
setFacing((byte)ForgeDirection.getOrientation(facing).getRotation(axis).ordinal());
|
||||
worldObj.addBlockEvent(xCoord, yCoord, zCoord, IronChest.ironChestBlock.blockID, 2, getFacing());
|
||||
}
|
||||
|
||||
public void wasPlaced(EntityLivingBase entityliving, ItemStack itemStack)
|
||||
{
|
||||
}
|
||||
|
||||
public void removeAdornments()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue