Example #1
0
  @SuppressWarnings("restriction")
  @Override
  public void encode(ByteBuf buf) {
    buf.writeLong(id); // Ulong but whatever
    // TODO: Not sure exactly how to approach writing unsigned ints!
    BitArray bitArray = new BitArray(8 * bitmask.length, bitmask); // Size in bits, byte[]
    buf.writeBytes(bitmask);

    if (bitArray.get(0)) {
      buf.writeLong(posX);
      buf.writeLong(posY);
      buf.writeLong(posZ);
    }
    if (bitArray.get(1)) {
      buf.writeFloat(pitch);
      buf.writeFloat(roll);
      buf.writeFloat(yaw);
    }
    if (bitArray.get(2)) {
      velocity.encode(buf);
    }
    if (bitArray.get(3)) {
      accel.encode(buf);
    }
    if (bitArray.get(4)) {
      extraVel.encode(buf);
    }
    if (bitArray.get(5)) {
      buf.writeFloat(lookPitch);
    }
    if (bitArray.get(6)) {
      buf.writeInt((int) physicsFlags);
    }
    if (bitArray.get(7)) {
      buf.writeByte(speedFlags);
    }
    if (bitArray.get(8)) {
      buf.writeInt((int) entityType);
    }
    if (bitArray.get(9)) {
      buf.writeByte(currentMode);
    }
    if (bitArray.get(10)) {
      buf.writeInt((int) lastShootTime);
    }
    if (bitArray.get(11)) {
      buf.writeInt((int) hitCounter);
    }
    if (bitArray.get(12)) {
      buf.writeInt((int) lastHitTime);
    }
    if (bitArray.get(13)) {
      app.encode(buf);
    }
    if (bitArray.get(14)) {
      buf.writeByte(flags1);
      buf.writeByte(flags2);
    }
    if (bitArray.get(15)) {
      buf.writeInt((int) rollTime);
    }
    if (bitArray.get(16)) {
      buf.writeInt(stunTime);
    }
    if (bitArray.get(17)) {
      buf.writeInt((int) slowedTime);
    }
    if (bitArray.get(18)) {
      buf.writeInt((int) makeBlueTime);
    }
    if (bitArray.get(19)) {
      buf.writeInt((int) speedUpTime);
    }
    if (bitArray.get(20)) {
      buf.writeFloat(slowPatchTime);
    }
    if (bitArray.get(21)) {
      buf.writeByte(classType);
    }
    if (bitArray.get(22)) {
      buf.writeByte(specialization);
    }
    if (bitArray.get(23)) {
      buf.writeFloat(chargedMP);
    }
    if (bitArray.get(24)) {
      buf.writeInt((int) nu1);
      buf.writeInt((int) nu2);
      buf.writeInt((int) nu3);
    }
    if (bitArray.get(25)) {
      buf.writeInt((int) nu4);
      buf.writeInt((int) nu5);
      buf.writeInt((int) nu6);
    }
    if (bitArray.get(26)) {
      rayHit.encode(buf);
    }
    if (bitArray.get(27)) {
      buf.writeFloat(HP);
    }
    if (bitArray.get(28)) {
      buf.writeFloat(MP);
    }
    if (bitArray.get(29)) {
      buf.writeFloat(blockPower);
    }
    if (bitArray.get(30)) {
      buf.writeFloat(maxHPMultiplier);
      buf.writeFloat(shootSpeed);
      buf.writeFloat(damageMultiplier);
      buf.writeFloat(armorMultiplier);
      buf.writeFloat(resistanceMultiplier);
    }
    if (bitArray.get(31)) {
      buf.writeByte(nu7);
    }
    if (bitArray.get(32)) {
      buf.writeByte(nu8);
    }
    if (bitArray.get(33)) {
      buf.writeInt((int) level);
    }
    if (bitArray.get(34)) {
      buf.writeInt((int) currentXP);
    }
    if (bitArray.get(35)) {
      buf.writeLong(parentOwner);
    }
    if (bitArray.get(36)) {
      buf.writeInt((int) na1);
      buf.writeInt((int) na2);
    }
    if (bitArray.get(37)) {
      buf.writeByte(na3);
    }
    if (bitArray.get(38)) {
      buf.writeInt((int) na4);
    }
    if (bitArray.get(39)) {
      buf.writeInt((int) na5);
      buf.writeInt((int) nu11);
      buf.writeInt((int) nu12);
    }
    if (bitArray.get(40)) {
      buf.writeInt((int) nu13);
      buf.writeInt((int) nu14);
      buf.writeInt((int) nu15);
      buf.writeInt((int) nu16);
      buf.writeInt((int) nu17);
      buf.writeInt((int) nu18);
    }
    if (bitArray.get(41)) {
      buf.writeInt((int) nu20);
      buf.writeInt((int) nu21);
      buf.writeInt((int) nu22);
    }
    if (bitArray.get(42)) {
      buf.writeByte(nu19);
    }
    if (bitArray.get(43)) {
      itemData.encode(buf);
    }
    if (bitArray.get(44)) {
      for (int i = 0; i < 13; i++) {
        GItem item = equipment[i];
        item.encode(buf);
      }
    }
    if (bitArray.get(45)) {
      byte[] utf8 = name.getBytes(Charsets.UTF_8);
      buf.writeBytes(new byte[4]); // TODO But why?
      buf.writeBytes(utf8);
      buf.writeBytes(new byte[16 - name.length()]);
    }
    if (bitArray.get(46)) {
      for (int i = 0; i < 11; i++) {
        buf.writeInt((int) skills[i]);
      }
    }
    if (bitArray.get(47)) {
      buf.writeInt((int) iceBlockFour);
    }

    buf.capacity(buf.writerIndex() + 1);
    if (buf.readerIndex() > 0) {
      System.out.println("I read something during an encode?!");
    }
  }
Example #2
0
  @Override
  @SuppressWarnings("restriction")
  public void decode(ByteBuf buf) {
    id = buf.readLong();
    buf.readBytes(bitmask);
    BitArray bitArray =
        new BitArray(8 * bitmask.length, Bitops.flipBits(bitmask)); // Size in bits, byte[]
    // BitArray bitArray = new BitArray(bitmask);

    if (bitArray.get(0)) {
      posX = buf.readLong();
      posY = buf.readLong();
      posZ = buf.readLong();
    }
    if (bitArray.get(1)) {
      pitch = buf.readFloat();
      roll = buf.readFloat();
      yaw = buf.readFloat();
    }
    if (bitArray.get(2)) {
      velocity.decode(buf);
    }
    if (bitArray.get(3)) {
      accel.decode(buf);
    }
    if (bitArray.get(4)) {
      extraVel.decode(buf);
    }
    if (bitArray.get(5)) {
      lookPitch = buf.readFloat();
    }
    if (bitArray.get(6)) {
      physicsFlags = buf.readUnsignedInt();
    }
    if (bitArray.get(7)) {
      speedFlags = buf.readByte();
    }
    if (bitArray.get(8)) {
      entityType = buf.readUnsignedInt();
    }
    if (bitArray.get(9)) {
      currentMode = buf.readByte();
    }
    if (bitArray.get(10)) {
      lastShootTime = buf.readUnsignedInt();
    }
    if (bitArray.get(11)) {
      hitCounter = buf.readUnsignedInt();
    }
    if (bitArray.get(12)) {
      lastHitTime = buf.readUnsignedInt();
    }
    if (bitArray.get(13)) {
      app.decode(buf);
    }
    if (bitArray.get(14)) {
      flags1 = buf.readByte();
      flags2 = buf.readByte();
    }
    if (bitArray.get(15)) {
      rollTime = buf.readUnsignedInt();
    }
    if (bitArray.get(16)) {
      stunTime = buf.readInt();
    }
    if (bitArray.get(17)) {
      slowedTime = buf.readUnsignedInt();
    }
    if (bitArray.get(18)) {
      makeBlueTime = buf.readUnsignedInt();
    }
    if (bitArray.get(19)) {
      speedUpTime = buf.readUnsignedInt();
    }
    if (bitArray.get(20)) {
      slowPatchTime = buf.readFloat();
    }
    if (bitArray.get(21)) {
      classType = buf.readByte();
    }
    if (bitArray.get(22)) {
      specialization = buf.readByte();
    }
    if (bitArray.get(23)) {
      chargedMP = buf.readFloat();
    }
    if (bitArray.get(24)) {
      nu1 = buf.readUnsignedInt();
      nu2 = buf.readUnsignedInt();
      nu3 = buf.readUnsignedInt();
    }
    if (bitArray.get(25)) {
      nu4 = buf.readUnsignedInt();
      nu5 = buf.readUnsignedInt();
      nu6 = buf.readUnsignedInt();
    }
    if (bitArray.get(26)) {
      rayHit.decode(buf);
    }
    if (bitArray.get(27)) {
      HP = buf.readFloat();
    }
    if (bitArray.get(28)) {
      MP = buf.readFloat();
    }
    if (bitArray.get(29)) {
      blockPower = buf.readFloat();
    }
    if (bitArray.get(30)) {
      maxHPMultiplier = buf.readFloat();
      shootSpeed = buf.readFloat();
      damageMultiplier = buf.readFloat();
      armorMultiplier = buf.readFloat();
      resistanceMultiplier = buf.readFloat();
    }
    if (bitArray.get(31)) {
      nu7 = buf.readByte();
    }
    if (bitArray.get(32)) {
      nu8 = buf.readByte();
    }
    if (bitArray.get(33)) {
      level = buf.readUnsignedInt();
    }
    if (bitArray.get(34)) {
      currentXP = buf.readUnsignedInt();
    }
    if (bitArray.get(35)) {
      parentOwner = buf.readLong();
    }
    if (bitArray.get(36)) {
      na1 = buf.readUnsignedInt();
      na2 = buf.readUnsignedInt();
    }
    if (bitArray.get(37)) {
      na3 = buf.readByte();
    }
    if (bitArray.get(38)) {
      na4 = buf.readUnsignedInt();
    }
    if (bitArray.get(39)) {
      na5 = buf.readUnsignedInt();
      nu11 = buf.readUnsignedInt();
      nu12 = buf.readUnsignedInt();
    }
    if (bitArray.get(40)) {
      nu13 = buf.readUnsignedInt();
      nu14 = buf.readUnsignedInt();
      nu15 = buf.readUnsignedInt();
      nu16 = buf.readUnsignedInt();
      nu17 = buf.readUnsignedInt();
      nu18 = buf.readUnsignedInt();
    }
    if (bitArray.get(41)) {
      nu20 = buf.readUnsignedInt();
      nu21 = buf.readUnsignedInt();
      nu22 = buf.readUnsignedInt();
    }
    if (bitArray.get(42)) {
      nu19 = buf.readByte();
    }
    if (bitArray.get(43)) {
      itemData.decode(buf);
    }
    if (bitArray.get(44)) {
      for (int i = 0; i < 13; i++) {
        GItem item = new GItem();
        item.decode(buf);
        equipment[i] = item;
      }
    }
    if (bitArray.get(45)) {
      name = new String(buf.readBytes(16).array(), Charsets.US_ASCII).trim();
    }
    if (bitArray.get(46)) {
      for (int i = 0; i < 11; i++) {
        skills[i] = buf.readUnsignedInt();
      }
    }
    if (bitArray.get(47)) {
      iceBlockFour = buf.readUnsignedInt();
    }

    debugCap = buf.capacity();
    buf.resetReaderIndex();
    buf.resetWriterIndex();
  }