159 lines
4.6 KiB
Java
159 lines
4.6 KiB
Java
package WayofTime.alchemicalWizardry.common.tileEntity;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.item.ItemBlock;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.nbt.NBTTagList;
|
|
import net.minecraftforge.common.util.Constants;
|
|
import WayofTime.alchemicalWizardry.ModBlocks;
|
|
import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainer;
|
|
import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainerInfo;
|
|
import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack;
|
|
|
|
public class TEBellJar extends TEReagentConduit
|
|
{
|
|
public TEBellJar()
|
|
{
|
|
super(1, 16000);
|
|
this.maxConnextions = 1;
|
|
this.affectedByRedstone = false;
|
|
}
|
|
|
|
public int getRSPowerOutput()
|
|
{
|
|
ReagentContainer thisTank = this.tanks[0];
|
|
if(thisTank != null)
|
|
{
|
|
ReagentStack stack = thisTank.getReagent();
|
|
if(stack != null)
|
|
{
|
|
return (15*stack.amount/thisTank.getCapacity());
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public static ReagentContainerInfo[] getContainerInfoFromItem(ItemStack stack)
|
|
{
|
|
if(stack != null && stack.getItem() instanceof ItemBlock && ModBlocks.blockCrystalBelljar == ((ItemBlock)stack.getItem()).field_150939_a)
|
|
{
|
|
NBTTagCompound tag = stack.getTagCompound();
|
|
if(tag != null)
|
|
{
|
|
NBTTagList tagList = tag.getTagList("reagentTanks", Constants.NBT.TAG_COMPOUND);
|
|
|
|
int size = tagList.tagCount();
|
|
ReagentContainer[] tanks = new ReagentContainer[size];
|
|
|
|
ReagentContainerInfo[] infos = new ReagentContainerInfo[size];
|
|
|
|
for(int i=0; i<size; i++)
|
|
{
|
|
NBTTagCompound savedTag = tagList.getCompoundTagAt(i);
|
|
tanks[i] = ReagentContainer.readFromNBT(savedTag);
|
|
|
|
if(tanks[i] != null)
|
|
{
|
|
infos[i] = tanks[i].getInfo();
|
|
}
|
|
}
|
|
|
|
return infos;
|
|
}
|
|
}
|
|
|
|
return new ReagentContainerInfo[0];
|
|
}
|
|
|
|
public void readTankNBTOnPlace(NBTTagCompound tag)
|
|
{
|
|
NBTTagList tagList = tag.getTagList("reagentTanks", Constants.NBT.TAG_COMPOUND);
|
|
|
|
int size = tagList.tagCount();
|
|
this.tanks = new ReagentContainer[size];
|
|
|
|
for(int i=0; i<size; i++)
|
|
{
|
|
NBTTagCompound savedTag = tagList.getCompoundTagAt(i);
|
|
this.tanks[i] = ReagentContainer.readFromNBT(savedTag);
|
|
}
|
|
}
|
|
|
|
public void writeTankNBT(NBTTagCompound tag)
|
|
{
|
|
NBTTagList tagList = new NBTTagList();
|
|
|
|
for(int i=0; i<this.tanks.length; i++)
|
|
{
|
|
NBTTagCompound savedTag = new NBTTagCompound();
|
|
if(this.tanks[i] != null)
|
|
{
|
|
this.tanks[i].writeToNBT(savedTag);
|
|
}
|
|
tagList.appendTag(savedTag);
|
|
}
|
|
|
|
tag.setTag("reagentTanks", tagList);
|
|
}
|
|
|
|
// @Override
|
|
// public void readClientNBT(NBTTagCompound tag)
|
|
// {
|
|
// super.readClientNBT(tag);
|
|
//
|
|
// NBTTagList tagList = tag.getTagList("reagentTanks", Constants.NBT.TAG_COMPOUND);
|
|
//
|
|
// int size = tagList.tagCount();
|
|
// this.tanks = new ReagentContainer[size];
|
|
//
|
|
// for(int i=0; i<size; i++)
|
|
// {
|
|
// NBTTagCompound savedTag = tagList.getCompoundTagAt(i);
|
|
// this.tanks[i] = ReagentContainer.readFromNBT(savedTag);
|
|
// }
|
|
// }
|
|
//
|
|
// @Override
|
|
// public void writeClientNBT(NBTTagCompound tag)
|
|
// {
|
|
// super.writeClientNBT(tag);
|
|
//
|
|
// NBTTagList tagList = new NBTTagList();
|
|
//
|
|
// for(int i=0; i<this.tanks.length; i++)
|
|
// {
|
|
// NBTTagCompound savedTag = new NBTTagCompound();
|
|
// if(this.tanks[i] != null)
|
|
// {
|
|
// this.tanks[i].writeToNBT(savedTag);
|
|
// }
|
|
// tagList.appendTag(savedTag);
|
|
// }
|
|
//
|
|
// tag.setTag("reagentTanks", tagList);
|
|
// }
|
|
|
|
@Override
|
|
public void updateEntity()
|
|
{
|
|
super.updateEntity();
|
|
|
|
if(hasChanged == 1)
|
|
{
|
|
Block block = worldObj.getBlock(xCoord+1, yCoord, zCoord);
|
|
block.onNeighborBlockChange(worldObj, xCoord+1, yCoord, zCoord, block);
|
|
block = worldObj.getBlock(xCoord-1, yCoord, zCoord);
|
|
block.onNeighborBlockChange(worldObj, xCoord-1, yCoord, zCoord, block);
|
|
block = worldObj.getBlock(xCoord, yCoord+1, zCoord);
|
|
block.onNeighborBlockChange(worldObj, xCoord, yCoord+1, zCoord, block);
|
|
block = worldObj.getBlock(xCoord, yCoord-1, zCoord);
|
|
block.onNeighborBlockChange(worldObj, xCoord, yCoord-1, zCoord, block);
|
|
block = worldObj.getBlock(xCoord, yCoord, zCoord+1);
|
|
block.onNeighborBlockChange(worldObj, xCoord, yCoord, zCoord+1, block);
|
|
block = worldObj.getBlock(xCoord, yCoord, zCoord-1);
|
|
block.onNeighborBlockChange(worldObj, xCoord, yCoord, zCoord-1, block);
|
|
}
|
|
}
|
|
}
|