package gregtech.api.metatileentity;
import static gregtech.api.enums.GT_Values.NW;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.interfaces.tileentity.IPipeRenderedTileEntity;
import gregtech.api.net.GT_Packet_TileEntity;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.Packet;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
/**
* NEVER INCLUDE THIS FILE IN YOUR MOD!!!
*
* This is the main TileEntity for EVERYTHING.
*/
public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileEntity, IPipeRenderedTileEntity {
public byte mConnections = 0;
protected MetaPipeEntity mMetaTileEntity;
private byte[] mSidedRedstone = new byte[] {0,0,0,0,0,0};
private int[] mCoverSides = new int[] {0,0,0,0,0,0}, mCoverData = new int[] {0,0,0,0,0,0}, mTimeStatistics = new int[GregTech_API.TICKS_FOR_LAG_AVERAGING];
private boolean mInventoryChanged = false, mWorkUpdate = false, mWorks = true, mNeedsUpdate = true, mNeedsBlockUpdate = true, mSendClientData = false;
private byte mColor = 0, oColor = 0, mStrongRedstone = 0, oRedstoneData = 63, oTextureData = 0, oUpdateData = 0, mLagWarningCount = 0;
private int oX = 0, oY = 0, oZ = 0, mTimeStatisticsIndex = 0;
private short mID = 0;
private long mTickTimer = 0;
public BaseMetaPipeEntity() {}
@Override
public void writeToNBT(NBTTagCompound aNBT) {
try {
super.writeToNBT(aNBT);
} catch(Throwable e) {
GT_Log.err.println("Encountered CRITICAL ERROR while saving MetaTileEntity, the Chunk whould've been corrupted by now, but I prevented that. Please report immidietly to GregTech Intergalactical!!!");
e.printStackTrace(GT_Log.err);
}
try {
aNBT.setInteger ("mID" , mID);
aNBT.setIntArray ("mCoverData" , mCoverData);
aNBT.setIntArray ("mCoverSides" , mCoverSides);
aNBT.setByteArray ("mRedstoneSided" , mSidedRedstone);
aNBT.setByte ("mConnections" , mConnections);
aNBT.setByte ("mColor" , mColor);
aNBT.setByte ("mStrongRedstone" , mStrongRedstone);
aNBT.setBoolean ("mWorks" , !mWorks);
} catch(Throwable e) {
GT_Log.err.println("Encountered CRITICAL ERROR while saving MetaTileEntity, the Chunk whould've been corrupted by now, but I prevented that. Please report immidietly to GregTech Intergalactical!!!");
e.printStackTrace(GT_Log.err);
}
try {
if (hasValidMetaTileEntity()) {
NBTTagList tItemList = new NBTTagList();
for (int i = 0; i < mMetaTileEntity.getRealInventory().length; i++) {
ItemStack tStack = mMetaTileEntity.getRealInventory()[i];
if (tStack != null) {
NBTTagCompound tTag = new NBTTagCompound();
tTag.setInteger("IntSlot", i);
tStack.writeToNBT(tTag);
tItemList.appendTag(tTag);
}
}
aNBT.setTag("Inventory", tItemList);
try {
mMetaTileEntity.saveNBTData(aNBT);
} catch(Throwable e) {
GT_Log.err.println("Encountered CRITICAL ERROR while saving MetaTileEntity, the Chunk whould've been corrupt