diff options
Diffstat (limited to 'src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java')
-rw-r--r-- | src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java new file mode 100644 index 0000000000..3443ae52ca --- /dev/null +++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java @@ -0,0 +1,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); + } +} |