aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java
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);
    }
}