64 lines
1.3 KiB
Java
64 lines
1.3 KiB
Java
|
package appeng.core.sync.packets;
|
||
|
|
||
|
import io.netty.buffer.ByteBuf;
|
||
|
import io.netty.buffer.Unpooled;
|
||
|
|
||
|
import java.io.IOException;
|
||
|
|
||
|
import net.minecraft.entity.player.EntityPlayer;
|
||
|
import appeng.container.AEBaseContainer;
|
||
|
import appeng.core.sync.AppEngPacket;
|
||
|
import appeng.core.sync.network.INetworkInfo;
|
||
|
|
||
|
public class PacketPartialItem extends AppEngPacket
|
||
|
{
|
||
|
|
||
|
short pageNum;
|
||
|
byte[] data;
|
||
|
|
||
|
// automatic.
|
||
|
public PacketPartialItem(ByteBuf stream) throws IOException {
|
||
|
pageNum = stream.readShort();
|
||
|
stream.readBytes( data = new byte[stream.readableBytes()] );
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void serverPacketData(INetworkInfo manager, AppEngPacket packet, EntityPlayer player)
|
||
|
{
|
||
|
if ( player.openContainer instanceof AEBaseContainer )
|
||
|
{
|
||
|
((AEBaseContainer) player.openContainer).postPartial( this );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// api
|
||
|
public PacketPartialItem(int page, int maxPages, byte[] buf) throws IOException {
|
||
|
|
||
|
ByteBuf data = Unpooled.buffer();
|
||
|
|
||
|
pageNum = (short) (page | (maxPages << 8));
|
||
|
this.data = buf;
|
||
|
data.writeInt( getPacketID() );
|
||
|
data.writeShort( pageNum );
|
||
|
data.writeBytes( buf );
|
||
|
|
||
|
configureWrite( data );
|
||
|
}
|
||
|
|
||
|
public int getPageCount()
|
||
|
{
|
||
|
return pageNum >> 8;
|
||
|
}
|
||
|
|
||
|
public int getSize()
|
||
|
{
|
||
|
return data.length;
|
||
|
}
|
||
|
|
||
|
public int write(byte[] buffer, int cursor)
|
||
|
{
|
||
|
System.arraycopy( data, 0, buffer, cursor, data.length );
|
||
|
return cursor + data.length;
|
||
|
}
|
||
|
}
|