Example #1
0
  @Override
  public void processPacket(final Player c, int packetType, int packetSize) {
    c.walkingToItem = false;
    c.pItemY = c.getInStream().readSignedWordBigEndian();
    c.pItemId = c.getInStream().readUnsignedWord();
    c.pItemX = c.getInStream().readSignedWordBigEndian();
    if (Math.abs(c.getX() - c.pItemX) > 25 || Math.abs(c.getY() - c.pItemY) > 25) {
      c.resetWalkingQueue();
      return;
    }
    DuelSession duelSession =
        (DuelSession)
            Server.getMultiplayerSessionListener()
                .getMultiplayerSession(c, MultiplayerSessionType.DUEL);
    if (Objects.nonNull(duelSession)
        && duelSession.getStage().getStage() > MultiplayerSessionStage.REQUEST
        && duelSession.getStage().getStage() < MultiplayerSessionStage.FURTHER_INTERACTION) {
      c.sendMessage("Your actions have declined the duel.");
      duelSession.getOther(c).sendMessage("The challenger has declined the duel.");
      duelSession.finish(MultiplayerSessionFinalizeType.WITHDRAW_ITEMS);
      return;
    }
    if (c.getInterfaceEvent().isActive()) {
      c.sendMessage("Please finish what you're doing.");
      return;
    }
    if (c.getPA().viewingOtherBank) {
      c.getPA().resetOtherBank();
    }
    c.getCombat().resetPlayerAttack();
    if (c.getX() == c.pItemX && c.getY() == c.pItemY) {
      Server.itemHandler.removeGroundItem(c, c.pItemId, c.pItemX, c.pItemY, c.heightLevel, true);
    } else {
      c.walkingToItem = true;
      CycleEventHandler.getSingleton()
          .addEvent(
              c,
              new CycleEvent() {
                @Override
                public void execute(CycleEventContainer container) {
                  if (!c.walkingToItem) container.stop();
                  if (c.getX() == c.pItemX && c.getY() == c.pItemY) {
                    Server.itemHandler.removeGroundItem(
                        c, c.pItemId, c.pItemX, c.pItemY, c.heightLevel, true);
                    container.stop();
                  }
                }

                @Override
                public void stop() {
                  c.walkingToItem = false;
                }
              },
              1);
    }
  }