/*
* 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.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import mods.railcraft.common.util.misc.Game;
public class PacketTileExtraData extends RailcraftPacket
{
private ITileExtraDataHandler tile;
private ByteArrayOutputStream bytes;
private DataOutputStream data;
public PacketTileExtraData()
{
super();
}
public PacketTileExtraData(ITileExtraDataHandler tile)
{
this.tile = tile;
}
public DataOutputStream getDataStream()
{
if(data == null) {
bytes = new ByteArrayOutputStream();
data = new DataOutputStream(bytes);
}
return data;
}
@Override
public void writeData(DataOutputStream data) throws IOException
{
data.writeInt(tile.getX());
data.writeInt(tile.getY());
data.writeInt(tile.getZ());
data.write(bytes.toByteArray());
}
@Override
@SideOnly(Side.CLIENT)
public void readData(DataInputStream data) throws IOException
{
World world = Game.getWorld();
int x = data.readInt();
int y = data.readInt();
int z = data.readInt();
TileEntity t = world.getTileEntity(x, y, z);
if(t instanceof ITileExtraDataHandler) {
((ITileExtraDataHandler)t).onUpdatePacket(data);
}
}
@Override
public int getID()
{
return PacketType.TILE_EXTRA_DATA.ordinal();
}
}