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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
package gregtech.api.net;
import com.google.common.io.ByteArrayDataInput;
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.util.ISerializableObject;
import gregtech.common.GT_Proxy;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
/**
* Server -> Client: Show GUI
*/
public class GT_Packet_TileEntityCoverGUI extends GT_Packet_New {
protected int mX;
protected short mY;
protected int mZ;
protected byte side;
protected int coverID, dimID, playerID;
protected ISerializableObject coverData;
public GT_Packet_TileEntityCoverGUI() {
super(true);
}
public GT_Packet_TileEntityCoverGUI(int mX, short mY, int mZ, byte coverSide, int coverID, int coverData, int dimID, int playerID) {
super(false);
this.mX = mX;
this.mY = mY;
this.mZ = mZ;
this.side = coverSide;
this.coverID = coverID;
this.coverData = new ISerializableObject.LegacyCoverData(coverData);
this.dimID = dimID;
this.playerID = playerID;
}
public GT_Packet_TileEntityCoverGUI(int mX, short mY, int mZ, byte coverSide, int coverID, ISerializableObject coverData, int dimID, int playerID) {
super(false);
this.mX = mX;
this.mY = mY;
this.mZ = mZ;
this.side = coverSide;
this.coverID = coverID;
this.coverData = coverData;
this.dimID = dimID;
this.playerID = playerID;
}
public GT_Packet_TileEntityCoverGUI(byte side, int coverID, int coverData, ICoverable tile, EntityPlayerMP aPlayer) {
super(false);
this.mX = tile.getXCoord();
this.mY = tile.getYCoord();
this.mZ = tile.getZCoord();
this.side = side;
this.coverID = coverID;
this.coverData = new ISerializableObject.LegacyCoverData(coverData);
this.dimID = tile.getWorld().provider.dimensionId;
this.playerID = aPlayer.getEntityId();
}
public GT_Packet_TileEntityCoverGUI(byte coverSide, int coverID, int coverData, IGregTechTileEntity tile) {
super(false);
this.mX = tile.getXCoord();
this.mY = tile.getYCoord();
this.mZ = tile.getZCoord();
this.side = coverSide;
this.coverID = coverID;
this.coverData = new ISerializableObject.LegacyCoverData(coverData);
this.dimID = tile.getWorld().provider.dimensionId;
}
public GT_Packet_TileEntityCoverGUI(byte side, int coverID, ISerializableObject coverData, ICoverable tile, EntityPlayerMP aPlayer) {
super(false);
this.mX = tile.getXCoord();
this.mY = tile.getYCoord();
this.mZ = tile.getZCoord();
this.side = side;
this.coverID = coverID;
this.coverData = coverData.copy(); // make a copy so we don't get a race condition
this.dimID = tile.getWorld().provider.dimensionId;
this.playerID = aPlayer.getEntityId();
}
@Override
public byte getPacketID() {
return 7;
}
@Override
public void encode(ByteBuf aOut) {
aOut.writeInt(mX);
aOut.writeShort(mY);
aOut.writeInt(mZ);
aOut.writeByte(side);
aOut.writeInt(coverID);
coverData.writeToByteBuf(aOut);
aOut.writeInt(dimID);
aOut.writeInt(playerID);
}
@Override
public GT_Packet_New decode(ByteArrayDataInput aData) {
int coverID;
return new GT_Packet_TileEntityCoverGUI(
aData.readInt(),
aData.readShort(),
aData.readInt(),
aData.readByte(),
coverID = aData.readInt(),
GregTech_API.getCoverBehaviorNew(coverID).createDataObject().readFromPacket(aData, null),
aData.readInt(),
aData.readInt());
}
@Override
public void process(IBlockAccess aWorld) {
if (aWorld instanceof World) {
EntityClientPlayerMP a = Minecraft.getMinecraft().thePlayer;
TileEntity tile = aWorld.getTileEntity(mX, mY, mZ);
if (tile instanceof IGregTechTileEntity && !((IGregTechTileEntity) tile).isDead()) {
((IGregTechTileEntity) tile).setCoverDataAtSide(side, coverData); //Set it client side to read later.
a.openGui(GT_Values.GT, GT_Proxy.GUI_ID_COVER_SIDE_BASE + side, a.worldObj, mX, mY, mZ);
}
}
}
}
|