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.DOWN;
|
||||||
import static net.minecraftforge.common.ForgeDirection.UP;
|
import static net.minecraftforge.common.ForgeDirection.UP;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import net.minecraft.block.BlockContainer;
|
import net.minecraft.block.BlockContainer;
|
||||||
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;
|
||||||
|
@ -95,6 +98,15 @@ public class BlockIronChest extends BlockContainer {
|
||||||
return null;
|
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
|
@Override
|
||||||
public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer player, int i1, float f1, float f2, float f3)
|
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);
|
TileEntity te = world.getBlockTileEntity(i, j, k);
|
||||||
if (te != null && te instanceof TileEntityIronChest)
|
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);
|
world.markBlockForUpdate(i, j, k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -167,6 +181,7 @@ public class BlockIronChest extends BlockContainer {
|
||||||
TileEntityIronChest tileentitychest = (TileEntityIronChest) world.getBlockTileEntity(i, j, k);
|
TileEntityIronChest tileentitychest = (TileEntityIronChest) world.getBlockTileEntity(i, j, k);
|
||||||
if (tileentitychest != null)
|
if (tileentitychest != null)
|
||||||
{
|
{
|
||||||
|
tileentitychest.removeAdornments();
|
||||||
dropContent(0, tileentitychest, world, tileentitychest.xCoord, tileentitychest.yCoord, tileentitychest.zCoord);
|
dropContent(0, tileentitychest, world, tileentitychest.xCoord, tileentitychest.yCoord, tileentitychest.zCoord);
|
||||||
}
|
}
|
||||||
super.breakBlock(world, i, j, k, i1, i2);
|
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.inventory.Slot;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagByte;
|
||||||
import net.minecraft.util.Icon;
|
import net.minecraft.util.Icon;
|
||||||
import net.minecraftforge.oredict.ShapedOreRecipe;
|
import net.minecraftforge.oredict.ShapedOreRecipe;
|
||||||
import cpw.mods.fml.common.registry.GameRegistry;
|
import cpw.mods.fml.common.registry.GameRegistry;
|
||||||
|
@ -254,4 +255,11 @@ public enum IronChestType {
|
||||||
{
|
{
|
||||||
return itemFilter == null || itemstack == null || itemstack.getItem() == itemFilter;
|
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 cpw.mods.fml.common.registry.LanguageRegistry;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
|
@ -24,6 +25,21 @@ public class TileEntityDirtChest extends TileEntityIronChest {
|
||||||
}
|
}
|
||||||
public TileEntityDirtChest() {
|
public TileEntityDirtChest() {
|
||||||
super(IronChestType.DIRTCHEST9000);
|
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.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -514,4 +515,13 @@ public class TileEntityIronChest extends TileEntity implements IInventory {
|
||||||
setFacing((byte)ForgeDirection.getOrientation(facing).getRotation(axis).ordinal());
|
setFacing((byte)ForgeDirection.getOrientation(facing).getRotation(axis).ordinal());
|
||||||
worldObj.addBlockEvent(xCoord, yCoord, zCoord, IronChest.ironChestBlock.blockID, 2, getFacing());
|
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