aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java')
-rw-r--r--src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java35
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);
+ }
+}