equivalent-exchange-3/ee3_common/net/minecraft/src/ee3/network/PacketTypeHandler.java

60 lines
1.5 KiB
Java

package net.minecraft.src.ee3.network;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import net.minecraft.src.Packet;
import net.minecraft.src.Packet250CustomPayload;
import net.minecraft.src.mod_EE3;
public enum PacketTypeHandler {
KEY(KeyPressedPacket.class),
TILE(TileEntityPacket.class),
PEDESTAL(PedestalPacket.class);
private Class<? extends EEPacket> clazz;
PacketTypeHandler(Class<? extends EEPacket> clazz) {
this.clazz=clazz;
}
// Called from PacketHandler.onPacketData
public static EEPacket buildPacket(byte[] data) {
ByteArrayInputStream bis = new ByteArrayInputStream(data);
int selector = bis.read();
DataInputStream dis = new DataInputStream(bis);
EEPacket pkt = null;
try {
pkt = values()[selector].clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
pkt.readPopulate(dis);
return pkt;
}
// Called from code to get a packet of a specific type
public static EEPacket buildPacket(PacketTypeHandler type) {
EEPacket pkt = null;
try {
pkt = values()[type.ordinal()].clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return pkt;
}
public static Packet populatePacket(EEPacket packet) {
byte[] data = packet.populate();
Packet250CustomPayload pkt = new Packet250CustomPayload();
pkt.channel = mod_EE3.CHANNEL_NAME;
pkt.data = data;
pkt.length = data.length;
pkt.isChunkDataPacket = packet.isChunkDataPacket;
return pkt;
}
}