Considerable progress on Interface terminal.
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
package appeng.core.sync.packets;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.nbt.CompressedStreamTools;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import appeng.client.gui.implementations.GuiInterfaceTerminal;
|
||||
import appeng.core.sync.AppEngPacket;
|
||||
import appeng.core.sync.network.INetworkInfo;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class PacketCompressedNBT extends AppEngPacket
|
||||
{
|
||||
|
||||
// output...
|
||||
final private ByteBuf data;
|
||||
final private GZIPOutputStream compressFrame;
|
||||
|
||||
int writtenBytes = 0;
|
||||
|
||||
boolean empty = true;
|
||||
|
||||
// input.
|
||||
final NBTTagCompound in;
|
||||
|
||||
// automatic.
|
||||
public PacketCompressedNBT(final ByteBuf stream) throws IOException {
|
||||
data = null;
|
||||
compressFrame = null;
|
||||
|
||||
GZIPInputStream gzReader = new GZIPInputStream( new InputStream() {
|
||||
|
||||
@Override
|
||||
public int read() throws IOException
|
||||
{
|
||||
if ( stream.readableBytes() <= 0 )
|
||||
return -1;
|
||||
|
||||
return (int) stream.readByte() & 0xff;
|
||||
}
|
||||
|
||||
} );
|
||||
|
||||
in = CompressedStreamTools.read( new DataInputStream( gzReader ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void clientPacketData(INetworkInfo network, AppEngPacket packet, EntityPlayer player)
|
||||
{
|
||||
GuiScreen gs = Minecraft.getMinecraft().currentScreen;
|
||||
|
||||
if ( gs instanceof GuiInterfaceTerminal )
|
||||
((GuiInterfaceTerminal) gs).postUpdate( in );
|
||||
|
||||
}
|
||||
|
||||
// api
|
||||
public PacketCompressedNBT(NBTTagCompound din) throws IOException {
|
||||
|
||||
data = Unpooled.buffer( 2048 );
|
||||
data.writeInt( getPacketID() );
|
||||
|
||||
in = din;
|
||||
|
||||
compressFrame = new GZIPOutputStream( new OutputStream() {
|
||||
|
||||
@Override
|
||||
public void write(int value) throws IOException
|
||||
{
|
||||
data.writeByte( value );
|
||||
}
|
||||
|
||||
} );
|
||||
|
||||
CompressedStreamTools.write( din, new DataOutputStream( compressFrame ) );
|
||||
compressFrame.close();
|
||||
|
||||
configureWrite( data );
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user