@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); } }