generated from tilera/1710mod
176 lines
5.2 KiB
Java
176 lines
5.2 KiB
Java
package net.anvilcraft.thaummach.tiles;
|
|
|
|
import java.util.stream.IntStream;
|
|
|
|
import net.minecraft.client.gui.GuiScreen;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.inventory.IInventory;
|
|
import net.minecraft.inventory.ISidedInventory;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.nbt.NBTTagList;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
|
|
public class TileVoidChest extends TileEntity implements ISidedInventory {
|
|
private ItemStack[] vcItemStacks = new ItemStack[72];
|
|
|
|
// TODO: GUIs
|
|
//public GuiScreen getGui(EntityPlayer player) {
|
|
// return new GuiVoidChest(player.inventory, this);
|
|
//}
|
|
|
|
@Override
|
|
public void invalidate() {
|
|
this.updateContainingBlockInfo();
|
|
super.invalidate();
|
|
}
|
|
|
|
@Override
|
|
public ItemStack getStackInSlot(int i) {
|
|
return this.vcItemStacks[i];
|
|
}
|
|
|
|
@Override
|
|
public ItemStack decrStackSize(int i, int j) {
|
|
if (this.vcItemStacks[i] != null) {
|
|
ItemStack itemstack1;
|
|
this.markDirty();
|
|
if (this.vcItemStacks[i].stackSize <= j) {
|
|
itemstack1 = this.vcItemStacks[i];
|
|
this.vcItemStacks[i] = null;
|
|
return itemstack1;
|
|
} else {
|
|
itemstack1 = this.vcItemStacks[i].splitStack(j);
|
|
if (this.vcItemStacks[i].stackSize == 0) {
|
|
this.vcItemStacks[i] = null;
|
|
}
|
|
|
|
return itemstack1;
|
|
}
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void setInventorySlotContents(int i, ItemStack itemstack) {
|
|
this.vcItemStacks[i] = itemstack;
|
|
if (itemstack != null && itemstack.stackSize > this.getInventoryStackLimit()) {
|
|
itemstack.stackSize = this.getInventoryStackLimit();
|
|
}
|
|
|
|
this.markDirty();
|
|
}
|
|
|
|
@Override
|
|
public String getInventoryName() {
|
|
return "Void Chest";
|
|
}
|
|
|
|
@Override
|
|
public void readFromNBT(NBTTagCompound nbttagcompound) {
|
|
super.readFromNBT(nbttagcompound);
|
|
NBTTagList nbttaglist = nbttagcompound.getTagList("Items", 10);
|
|
this.vcItemStacks = new ItemStack[this.getSizeInventory()];
|
|
|
|
for (int i = 0; i < nbttaglist.tagCount(); ++i) {
|
|
NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
|
|
byte byte0 = nbttagcompound1.getByte("SlotVoidChest");
|
|
if (byte0 >= 0 && byte0 < this.vcItemStacks.length) {
|
|
this.vcItemStacks[byte0]
|
|
= ItemStack.loadItemStackFromNBT(nbttagcompound1);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void writeToNBT(NBTTagCompound nbttagcompound) {
|
|
super.writeToNBT(nbttagcompound);
|
|
NBTTagList nbttaglist = new NBTTagList();
|
|
|
|
for (int i = 0; i < this.vcItemStacks.length; ++i) {
|
|
if (this.vcItemStacks[i] != null) {
|
|
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
|
|
nbttagcompound1.setByte("SlotVoidChest", (byte) i);
|
|
this.vcItemStacks[i].writeToNBT(nbttagcompound1);
|
|
nbttaglist.appendTag(nbttagcompound1);
|
|
}
|
|
}
|
|
|
|
nbttagcompound.setTag("Items", nbttaglist);
|
|
}
|
|
|
|
@Override
|
|
public int getInventoryStackLimit() {
|
|
return 64;
|
|
}
|
|
|
|
@Override
|
|
public ItemStack getStackInSlotOnClosing(int var1) {
|
|
if (this.vcItemStacks[var1] != null) {
|
|
ItemStack var2 = this.vcItemStacks[var1];
|
|
this.vcItemStacks[var1] = null;
|
|
return var2;
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void closeInventory() {
|
|
super.worldObj.playSoundEffect(
|
|
(double) ((float) super.xCoord + 0.5F),
|
|
(double) ((float) super.yCoord + 0.5F),
|
|
(double) ((float) super.zCoord + 0.5F),
|
|
"thaummach:stoneclose",
|
|
1.0F,
|
|
1.0F
|
|
);
|
|
}
|
|
|
|
@Override
|
|
public void openInventory() {}
|
|
|
|
@Override
|
|
public boolean hasCustomInventoryName() {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public int[] getAccessibleSlotsFromSide(int p_94128_1_) {
|
|
return IntStream.rangeClosed(0, this.vcItemStacks.length - 1).toArray();
|
|
}
|
|
|
|
@Override
|
|
public boolean canInsertItem(int slot, ItemStack otherStack, int side) {
|
|
ItemStack thisStack = this.vcItemStacks[slot];
|
|
return thisStack == null
|
|
|| (thisStack.isItemEqual(otherStack)
|
|
&& thisStack.stackSize + otherStack.stackSize
|
|
<= thisStack.getMaxStackSize());
|
|
}
|
|
|
|
@Override
|
|
public boolean canExtractItem(int slot, ItemStack otherStack, int side) {
|
|
ItemStack thisStack = this.vcItemStacks[slot];
|
|
|
|
return thisStack != null && thisStack.isItemEqual(otherStack)
|
|
&& thisStack.stackSize >= otherStack.stackSize;
|
|
}
|
|
|
|
@Override
|
|
public int getSizeInventory() {
|
|
return this.vcItemStacks.length;
|
|
}
|
|
|
|
@Override
|
|
public boolean isUseableByPlayer(EntityPlayer p_70300_1_) {
|
|
return true;
|
|
}
|
|
}
|