コード例 #1
0
 @Override
 public void split(ChannelHandlerContext ctx, ByteBuf input, List<Object> list) throws Exception {
   input.markReaderIndex();
   final byte[] array = new byte[3];
   for (int i = 0; i < array.length; ++i) {
     if (!input.isReadable()) {
       input.resetReaderIndex();
       return;
     }
     array[i] = input.readByte();
     if (array[i] >= 0) {
       final PacketDataSerializer packetDataSerializer =
           new PacketDataSerializer(
               Unpooled.wrappedBuffer(array), ProtocolVersion.MINECRAFT_1_7_10);
       try {
         final int length = packetDataSerializer.readVarInt();
         if (input.readableBytes() < length) {
           input.resetReaderIndex();
           return;
         }
         list.add(input.readBytes(length));
         return;
       } finally {
         packetDataSerializer.release();
       }
     }
   }
   throw new CorruptedFrameException("length wider than 21-bit");
 }
コード例 #2
0
 @Override
 public void readFromServerData(PacketDataSerializer serializer) throws IOException {
   entityId = serializer.readVarInt();
   type = serializer.readUnsignedByte();
   x = serializer.readInt();
   y = serializer.readInt();
   z = serializer.readInt();
   pitch = serializer.readUnsignedByte();
   yaw = serializer.readUnsignedByte();
   objectdata = serializer.readInt();
   if (objectdata > 0) {
     motX = serializer.readShort();
     motY = serializer.readShort();
     motZ = serializer.readShort();
   }
 }
コード例 #3
0
 @Override
 public void encode(ChannelHandlerContext ctx, Packet<PacketListener> packet, ByteBuf output)
     throws Exception {
   Channel channel = ctx.channel();
   EnumProtocol currentProtocol = channel.attr(currentStateAttrKey).get();
   final Integer packetId = currentProtocol.a(direction, packet);
   if (packetId == null) {
     throw new IOException("Can't serialize unregistered packet");
   }
   ClientBoundMiddlePacket<RecyclableCollection<PacketData>> packetTransformer =
       dataRemapperRegistry.getTransformer(currentProtocol, packetId);
   if (packetTransformer != null) {
     serverdata.clear();
     packet.b(serverdata);
     if (packetTransformer.needsPlayer()) {
       packetTransformer.setPlayer(ChannelUtils.getBukkitPlayer(channel));
     }
     packetTransformer.readFromServerData(serverdata);
     packetTransformer.setLocalStorage(storage);
     packetTransformer.handle();
     RecyclableCollection<PacketData> data = packetTransformer.toData(version);
     try {
       for (PacketData packetdata : data) {
         ByteBuf senddata = Allocator.allocateBuffer();
         senddata.writeByte(
             packetIdRegistry.getNewPacketId(currentProtocol, packetdata.getPacketId()));
         senddata.writeBytes(packetdata);
         ctx.write(senddata);
       }
       ctx.flush();
     } finally {
       for (PacketData packetdata : data) {
         packetdata.recycle();
       }
       data.recycle();
     }
   }
 }
コード例 #4
0
 @Override
 public void readFromServerData(PacketDataSerializer serializer) throws IOException {
   super.readFromServerData(serializer);
   effectId = serializer.readByte();
 }
コード例 #5
0
 @Override
 public void readFromServerData(PacketDataSerializer serializer) throws IOException {
   worldAge = serializer.readLong();
   timeOfDay = serializer.readLong();
 }
コード例 #6
0
 @Override
 public void readFromServerData(PacketDataSerializer serializer) throws IOException {
   entityId = serializer.readVarInt();
   animation = serializer.readUnsignedByte();
 }
コード例 #7
0
 @Override
 public void readFromServerData(PacketDataSerializer serializer) throws IOException {
   messageJson = serializer.readString(Short.MAX_VALUE);
 }