/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.util.network;
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
import io.netty.buffer.Unpooled;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public abstract class RailcraftPacket {
public final static String CHANNEL_NAME = "RC";
public enum PacketType {
TILE_ENTITY,
GUI_RETURN,
TILE_EXTRA_DATA,
TILE_REQUEST,
GUI_INTEGER,
GUI_STRING,
GUI_WIDGET,
EFFECT,
CONTROLLER_REQUEST, CONTROLLER_UPDATE,
RECEIVER_REQUEST, RECEIVER_UPDATE,
ITEM_NBT,
KEY_PRESS,
GOLDEN_TICKET_GUI,
}
public FMLProxyPacket getPacket() {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
DataOutputStream data = new DataOutputStream(bytes);
try {
data.writeByte(getID());
writeData(data);
} catch (IOException e) {
e.printStackTrace();
}
return new FMLProxyPacket(Unpooled.wrappedBuffer(bytes.toByteArray()), CHANNEL_NAME);
}
public abstract void writeData(DataOutputStream data) throws IOException;
public abstract void readData(DataInputStream data) throws IOException;
public abstract int getID();
@Override
public String toString() {
return getClass().getSimpleName();
}
}