blob: 3443ae52ca097ab8f7ae641c85b8c44af754da71 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package gregtech.api.multitileentity;
import gregtech.api.enums.Materials;
import gregtech.api.multitileentity.interfaces.IMultiTileEntity;
import gregtech.api.util.GT_Util;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import static gregtech.api.enums.GT_Values.NBT;
public class MultiTileEntityClassContainer {
public final Class<? extends TileEntity> mClass;
public final MultiTileEntityBlock mBlock;
public final TileEntity mCanonicalTileEntity;
public final NBTTagCompound mParameters;
public final byte mBlockMetaData, mStackSize;
public final short mID;
public final boolean mHidden;
public MultiTileEntityClassContainer(int aID, Class<? extends TileEntity> aClass, int aBlockMetaData, int aStackSize, MultiTileEntityBlock aBlock, NBTTagCompound aParameters) {
if (!IMultiTileEntity.class.isAssignableFrom(aClass)) throw new IllegalArgumentException("MultiTileEntities must implement the Interface IMultiTileEntity!");
mBlockMetaData = (byte) aBlockMetaData;
mStackSize = (byte) aStackSize;
mParameters = aParameters == null ? new NBTTagCompound() : aParameters;
mHidden = mParameters.getBoolean(NBT.HIDDEN);
mID = (short) aID;
mBlock = aBlock;
mClass = aClass;
if (mParameters.hasKey(NBT.MATERIAL) && !mParameters.hasKey(NBT.COLOR))
mParameters.setInteger(NBT.COLOR, GT_Util.getRGBInt(Materials.get(mParameters.getString(NBT.MATERIAL)).getRGBA()));
try {mCanonicalTileEntity = aClass.newInstance();} catch (Throwable e) {throw new IllegalArgumentException(e);}
if (mCanonicalTileEntity instanceof IMultiTileEntity) ((IMultiTileEntity) mCanonicalTileEntity).initFromNBT(mParameters, mID, (short) -1);
}
}
|