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.java96
1 files changed, 57 insertions, 39 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 b9e334d67b..b7bd8dbc02 100644
--- a/src/main/java/gregtech/api/net/GT_Packet_MultiTileEntity.java
+++ b/src/main/java/gregtech/api/net/GT_Packet_MultiTileEntity.java
@@ -21,7 +21,7 @@ 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], INVENTORY_INDEX = B[4],
- INVENTORY_NAME = B[5], BOOLEANS = B[6], SOUND = B[7];
+ INVENTORY_NAME_ID = B[5], BOOLEANS = B[6], SOUND = B[7];
private int features = 0;
@@ -32,14 +32,14 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
private ChunkCoordinates mTargetPos = null;
private int mLockedInventoryIndex;
private String mInventoryName;
- private int mInventoryLength;
+ private String inventoryID;
private int booleans;
private byte soundEvent;
private int soundEventValue;
// MultiBlockPart
- private byte mMode;
- private int mAllowedModes;
+ private int mode;
+ private int allowedModes;
public GT_Packet_MultiTileEntity() {
super(true);
@@ -77,10 +77,10 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
mRedstone = aRedstoneData;
}
- public void setModes(byte aMode, int aAllowedModes) {
+ public void setModes(int mode, int allowedModes) {
features |= MODES;
- mMode = aMode;
- mAllowedModes = aAllowedModes;
+ this.mode = mode;
+ this.allowedModes = allowedModes;
}
public void setTargetPos(int aX, short aY, int aZ) {
@@ -94,9 +94,10 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
}
- public void setInventoryName(String aInventoryName) {
- features |= INVENTORY_NAME;
+ public void setInventoryName(String aInventoryName, String inventoryID) {
+ features |= INVENTORY_NAME_ID;
mInventoryName = aInventoryName;
+ this.inventoryID = inventoryID;
}
/**
@@ -140,8 +141,8 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
aOut.writeByte(mRedstone);
}
if ((features & MODES) == MODES) {
- aOut.writeByte(mMode);
- aOut.writeInt(mAllowedModes);
+ aOut.writeInt(mode);
+ aOut.writeInt(allowedModes);
}
if ((features & CONTROLLER) == CONTROLLER) {
aOut.writeInt(mTargetPos.posX);
@@ -151,16 +152,20 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
if ((features & INVENTORY_INDEX) == INVENTORY_INDEX) {
aOut.writeInt(mLockedInventoryIndex);
}
- if ((features & INVENTORY_NAME) == INVENTORY_NAME) {
+ if ((features & INVENTORY_NAME_ID) == INVENTORY_NAME_ID) {
if (mInventoryName != null && mInventoryName.length() > 0) {
- mInventoryLength = mInventoryName.length();
- aOut.writeInt(mInventoryLength);
- for (char tChar : mInventoryName.toCharArray()) {
- aOut.writeChar(tChar);
- }
+ byte[] bytes = mInventoryName.getBytes();
+ aOut.writeInt(bytes.length);
+ aOut.writeBytes(bytes);
+ } else {
+ aOut.writeInt(0);
+ }
+ if (inventoryID != null && inventoryID.length() > 0) {
+ byte[] bytes = inventoryID.getBytes();
+ aOut.writeInt(bytes.length);
+ aOut.writeBytes(bytes);
} else {
- mInventoryLength = 0;
- aOut.writeInt(mInventoryLength);
+ aOut.writeInt(0);
}
}
@@ -203,7 +208,7 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
packet.setRedstoneData(aData.readByte());
}
if ((packetFeatures & MODES) == MODES) {
- packet.setModes(aData.readByte(), aData.readInt());
+ packet.setModes(aData.readInt(), aData.readInt());
}
if ((packetFeatures & CONTROLLER) == CONTROLLER) {
packet.setTargetPos(aData.readInt(), aData.readShort(), aData.readInt());
@@ -211,19 +216,30 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
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) {
- StringBuilder tNameBuilder = new StringBuilder();
- for (int i = 0; i < tLength; i++) {
- tNameBuilder.append(aData.readChar());
+ if ((packetFeatures & INVENTORY_NAME_ID) == INVENTORY_NAME_ID) {
+ int nameLength = aData.readInt();
+ String inventoryName;
+ if (nameLength > 0) {
+ byte[] bytes = new byte[nameLength];
+ for (int i = 0; i < nameLength; i++) {
+ bytes[i] = aData.readByte();
+ }
+ inventoryName = new String(bytes);
+ } else {
+ inventoryName = null;
+ }
+ int idLength = aData.readInt();
+ String inventoryID;
+ if (idLength > 0) {
+ byte[] bytes = new byte[idLength];
+ for (int i = 0; i < idLength; i++) {
+ bytes[i] = aData.readByte();
}
- tName = tNameBuilder.toString();
+ inventoryID = new String(bytes);
} else {
- tName = null;
+ inventoryID = null;
}
- packet.setInventoryName(tName);
+ packet.setInventoryName(inventoryName, inventoryID);
}
if ((packetFeatures & BOOLEANS) == BOOLEANS) {
@@ -246,19 +262,24 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
if (tBlock instanceof MultiTileEntityBlock mteBlock) {
final IMultiTileEntity mte = mteBlock.receiveMultiTileEntityData(aWorld, mX, mY, mZ, mRID, mID);
if (mte == null) return;
- mte.receiveClientEvent(GregTechTileClientEvents.CHANGE_COMMON_DATA, mCommonData);
- mte.receiveClientEvent(GregTechTileClientEvents.CHANGE_COLOR, mColor);
+ mte.receiveClientData(GregTechTileClientEvents.CHANGE_COMMON_DATA, mCommonData);
+ mte.receiveClientData(GregTechTileClientEvents.CHANGE_COLOR, mColor);
if ((features & COVERS) == COVERS) {
mteBlock.receiveCoverData(mte, mC0, mC1, mC2, mC3, mC4, mC5);
}
if ((features & REDSTONE) == REDSTONE) {
- mte.receiveClientEvent(GregTechTileClientEvents.CHANGE_REDSTONE_OUTPUT, mRedstone);
+ mte.receiveClientData(GregTechTileClientEvents.CHANGE_REDSTONE_OUTPUT, mRedstone);
}
if ((features & MODES) == MODES && mte instanceof IMultiTileEntity.IMTE_HasModes mteModes) {
- mteModes.setMode(mMode);
- mteModes.setAllowedModes(mAllowedModes);
+ mteModes.setMode(mode);
+ mteModes.setAllowedModes(allowedModes);
+ }
+
+ if ((features & INVENTORY_NAME_ID) == INVENTORY_NAME_ID && mte instanceof Inventory invUpg) {
+ invUpg.setInventoryName(mInventoryName);
+ invUpg.setInventoryId(inventoryID);
}
if ((features & CONTROLLER) == CONTROLLER && mte instanceof IMultiBlockPart) {
@@ -271,10 +292,6 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
mtePart.setLockedInventoryIndex(mLockedInventoryIndex);
}
- if ((features & INVENTORY_NAME) == INVENTORY_NAME && mte instanceof Inventory invUpg) {
- invUpg.setInventoryName(mInventoryName);
- }
-
if ((features & BOOLEANS) == BOOLEANS && mte instanceof IMultiTileMachine) {
final IMultiTileMachine machine = (IMultiTileMachine) mte;
machine.setBooleans(booleans);
@@ -287,6 +304,7 @@ public class GT_Packet_MultiTileEntity extends GT_Packet_New {
}
} catch (Exception e) {
+ e.printStackTrace();
GT_Mod.GT_FML_LOGGER.error(
"Exception setting tile entity data for tile entity {} at ({}, {}, {})",
tTileEntity,