aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/net/GT_Packet_MultiTileEntity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/net/GT_Packet_MultiTileEntity.java')
-rw-r--r--src/main/java/gregtech/api/net/GT_Packet_MultiTileEntity.java59
1 files changed, 58 insertions, 1 deletions
diff --git a/src/main/java/gregtech/api/net/GT_Packet_MultiTileEntity.java b/src/main/java/gregtech/api/net/GT_Packet_MultiTileEntity.java
index 9f83cc4eda..ffcc9d2a26 100644
--- a/src/main/java/gregtech/api/net/GT_Packet_MultiTileEntity.java
+++ b/src/main/java/gregtech/api/net/GT_Packet_MultiTileEntity.java
@@ -14,11 +14,13 @@ import gregtech.api.metatileentity.GregTechTileClientEvents;
import gregtech.api.multitileentity.MultiTileEntityBlock;
import gregtech.api.multitileentity.interfaces.IMultiBlockPart;
import gregtech.api.multitileentity.interfaces.IMultiTileEntity;
+import gregtech.api.multitileentity.multiblock.casing.InventoryUpgrade;
import io.netty.buffer.ByteBuf;
public class GT_Packet_MultiTileEntity extends GT_Packet_New {
- public static final int COVERS = B[0], REDSTONE = B[1], MODES = B[2], CONTROLLER = B[3];
+ public static final int COVERS = B[0], REDSTONE = B[1], MODES = B[2], CONTROLLER = B[3], INVENTORY_INDEX = B[4],
+ INVENTORY_NAME = B[5];
private int features = 0;
@@ -27,6 +29,9 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
private short mY, mID, mRID;
private byte mCommonData, mTexturePage, mUpdate, mRedstone, mColor;
private ChunkCoordinates mTargetPos = null;
+ private int mLockedInventoryIndex;
+ private String mInventoryName;
+ private int mInventoryLength;
// MultiBlockPart
private byte mMode;
@@ -79,6 +84,17 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
mTargetPos = new ChunkCoordinates(aX, aY, aZ);
}
+ public void setInventoryIndex(int aInventoryIndex) {
+ features |= INVENTORY_INDEX;
+ mLockedInventoryIndex = aInventoryIndex;
+
+ }
+
+ public void setInventoryName(String aInventoryName) {
+ features |= INVENTORY_NAME;
+ mInventoryName = aInventoryName;
+ }
+
@Override
public void encode(ByteBuf aOut) {
// Features
@@ -113,6 +129,21 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
aOut.writeShort(mTargetPos.posY);
aOut.writeInt(mTargetPos.posZ);
}
+ if ((features & INVENTORY_INDEX) == INVENTORY_INDEX) {
+ aOut.writeInt(mLockedInventoryIndex);
+ }
+ if ((features & INVENTORY_NAME) == INVENTORY_NAME) {
+ if (mInventoryName != null && mInventoryName.length() > 0) {
+ mInventoryLength = mInventoryName.length();
+ aOut.writeInt(mInventoryLength);
+ for (char tChar : mInventoryName.toCharArray()) {
+ aOut.writeChar(tChar);
+ }
+ } else {
+ mInventoryLength = 0;
+ aOut.writeInt(mInventoryLength);
+ }
+ }
if (false) {
aOut.writeByte(mTexturePage);
@@ -155,6 +186,21 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
if ((packetFeatures & CONTROLLER) == CONTROLLER) {
packet.setTargetPos(aData.readInt(), aData.readShort(), aData.readInt());
}
+ if ((packetFeatures & INVENTORY_INDEX) == INVENTORY_INDEX) {
+ packet.setInventoryIndex(aData.readInt());
+ }
+ if ((packetFeatures & INVENTORY_NAME) == INVENTORY_NAME) {
+ int tLength = aData.readInt();
+ String tName = "";
+ if (tLength > 0) {
+ for (int i = 0; i < tLength; i++) {
+ tName += aData.readChar();
+ }
+ } else {
+ tName = null;
+ }
+ packet.setInventoryName(tName);
+ }
return packet;
}
@@ -189,6 +235,17 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
final IMultiBlockPart mtePart = (IMultiBlockPart) mte;
mtePart.setTargetPos(mTargetPos);
}
+
+ if ((features & INVENTORY_INDEX) == INVENTORY_INDEX && mte instanceof IMultiBlockPart) {
+ final IMultiBlockPart mtePart = (IMultiBlockPart) mte;
+ mtePart.setLockedInventoryIndex(mLockedInventoryIndex);
+ }
+
+ if ((features & INVENTORY_NAME) == INVENTORY_NAME && mte instanceof InventoryUpgrade) {
+ final InventoryUpgrade invUpg = (InventoryUpgrade) mte;
+ invUpg.setInventoryName(mInventoryName);
+ }
+
}
} catch (Exception e) {
GT_Mod.GT_FML_LOGGER.error(