├── .github └── workflows │ ├── build-and-publish.yml │ └── release-body.md ├── .gitignore ├── .vscode └── settings.json ├── META-INF └── MANIFEST.MF ├── README.md ├── build.gradle ├── config └── client-435.conf.example.yaml ├── data ├── loc.dat ├── loc.idx ├── objects │ ├── 377_OBJECTS.dat │ └── 377_OBJECTS.idx └── osrsmodels.zip ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src └── main ├── java └── org │ └── runejs │ ├── Configuration.java │ ├── OldEngine │ ├── MapDecompressor.java │ ├── ModelLoader.java │ └── ObjectDecompressor.java │ ├── client │ ├── ActionRowType.java │ ├── Class35.java │ ├── Class40_Sub5_Sub15.java │ ├── Class40_Sub7.java │ ├── ClientScriptRunner.java │ ├── Game.java │ ├── GameErrorHandler.java │ ├── GameShell.java │ ├── GameSocket.java │ ├── GameStartup.java │ ├── HuffmanEncoding.java │ ├── Interface3.java │ ├── JSObject.java │ ├── Landscape.java │ ├── LinkedList.java │ ├── LoginScreen.java │ ├── MouseCapturer.java │ ├── MovedStatics.java │ ├── OnDemandRequestProcessor.java │ ├── ProducingGraphicsBuffer.java │ ├── ProducingGraphicsBuffer_Sub1.java │ ├── ProducingGraphicsBuffer_Sub2.java │ ├── Projectile.java │ ├── RSCanvas.java │ ├── RSRuntimeException.java │ ├── RSString.java │ ├── SizedAccessFile.java │ ├── SpotAnim.java │ ├── Texture.java │ ├── audio │ │ ├── Effect.java │ │ ├── Envelope.java │ │ ├── Filter.java │ │ └── Instrument.java │ ├── cache │ │ ├── CacheArchive.java │ │ ├── CacheFileChannel.java │ │ ├── CacheIndex.java │ │ ├── FileOperations.java │ │ ├── NameHashCollection.java │ │ ├── bzip │ │ │ ├── BZip.java │ │ │ └── BZipContext.java │ │ ├── cs │ │ │ ├── ClientScript.java │ │ │ ├── ClientScriptOpcodes.java │ │ │ └── GoSubFrame.java │ │ ├── def │ │ │ ├── ActorDefinition.java │ │ │ ├── EntityDefinition.java │ │ │ ├── FrameDefinition.java │ │ │ ├── FramemapDefinition.java │ │ │ ├── GameObjectDefinition.java │ │ │ ├── IdentityKit.java │ │ │ ├── ItemDefinition.java │ │ │ ├── OverlayDefinition.java │ │ │ ├── SpotAnimDefinition.java │ │ │ ├── UnderlayDefinition.java │ │ │ ├── VarPlayerDefinition.java │ │ │ ├── VarbitDefinition.java │ │ │ └── loading │ │ │ │ ├── CacheDefinition.java │ │ │ │ ├── DefinitionLoader.java │ │ │ │ └── rs435 │ │ │ │ ├── ActorDefinitionLoader.java │ │ │ │ ├── FrameDefinitionLoader.java │ │ │ │ ├── FramemapDefinitionLoader.java │ │ │ │ ├── GameObjectDefinitionLoader.java │ │ │ │ ├── IdentityKitDefinitionLoader.java │ │ │ │ ├── ItemDefinitionLoader.java │ │ │ │ ├── OverlayDefinitionLoader.java │ │ │ │ ├── SpotAnimDefinitionLoader.java │ │ │ │ ├── UnderlayDefinitionLoader.java │ │ │ │ ├── VarPlayerDefinitionLoader.java │ │ │ │ └── VarbitDefinitionLoader.java │ │ ├── media │ │ │ ├── AnimationSequence.java │ │ │ ├── ImageRGB.java │ │ │ ├── IndexedImage.java │ │ │ ├── TypeFace.java │ │ │ ├── gameInterface │ │ │ │ ├── GameInterface.java │ │ │ │ ├── GameInterfaceArea.java │ │ │ │ ├── GameInterfaceType.java │ │ │ │ └── InterfaceModelType.java │ │ │ └── textUtils │ │ │ │ ├── TextColourNode.java │ │ │ │ ├── TextColourQueue.java │ │ │ │ ├── TextTagNode.java │ │ │ │ └── TextTagQueue.java │ │ └── system │ │ │ ├── CacheLocator.java │ │ │ └── JagexCacheLocator.java │ ├── chat │ │ ├── ChatColorEffect.java │ │ ├── ChatShapeEffect.java │ │ ├── FriendList.java │ │ └── SocialList.java │ ├── frame │ │ ├── ChatBox.java │ │ ├── DebugTools.java │ │ ├── FramePieceRenderer.java │ │ ├── FrameRenderer.java │ │ ├── Minimap.java │ │ ├── ResizableFrameRenderer.java │ │ ├── ScreenController.java │ │ ├── ScreenMode.java │ │ ├── console │ │ │ ├── Command.java │ │ │ ├── CommandList.java │ │ │ ├── Commands │ │ │ │ ├── AlphaCommand.java │ │ │ │ ├── ClearCommand.java │ │ │ │ ├── DebugClippingCommand.java │ │ │ │ ├── DebugCommand.java │ │ │ │ ├── DebugViewCommand.java │ │ │ │ ├── DebugWalkCommand.java │ │ │ │ ├── DebugWidgetsCommand.java │ │ │ │ ├── EchoCommand.java │ │ │ │ ├── FpsCommand.java │ │ │ │ ├── HelpCommand.java │ │ │ │ ├── HideFpsCommand.java │ │ │ │ ├── InventoryCommand.java │ │ │ │ ├── IpCommand.java │ │ │ │ ├── PlayerRightsCommand.java │ │ │ │ ├── ResizableCommand.java │ │ │ │ ├── RoofsCommand.java │ │ │ │ ├── SearchCommand.java │ │ │ │ ├── ServerCommand.java │ │ │ │ └── ShowFpsCommand.java │ │ │ └── Console.java │ │ └── tab │ │ │ ├── TabProducer.java │ │ │ └── parts │ │ │ └── TabParts.java │ ├── input │ │ ├── KeyFocusListener.java │ │ └── MouseHandler.java │ ├── io │ │ └── Buffer.java │ ├── language │ │ ├── English.java │ │ └── Native.java │ ├── login │ │ ├── LoginProtocol.java │ │ ├── LoginRequest.java │ │ ├── LoginType.java │ │ └── RS435LoginProtocol.java │ ├── media │ │ ├── Rasterizer.java │ │ ├── Rasterizer3D.java │ │ ├── RasterizerInstanced.java │ │ ├── VertexNormal.java │ │ └── renderable │ │ │ ├── GameObject.java │ │ │ ├── Item.java │ │ │ ├── Model.java │ │ │ ├── Renderable.java │ │ │ └── actor │ │ │ ├── Actor.java │ │ │ ├── Npc.java │ │ │ ├── Pathfinding.java │ │ │ ├── Player.java │ │ │ └── PlayerAppearance.java │ ├── message │ │ ├── InboundMessage.java │ │ ├── OutboundMessage.java │ │ ├── README.md │ │ ├── handler │ │ │ ├── MessageHandler.java │ │ │ ├── MessageHandlerRegistry.java │ │ │ ├── README.md │ │ │ └── rs435 │ │ │ │ ├── BulkMessageHandler.java │ │ │ │ ├── RS435HandlerRegistry.java │ │ │ │ ├── audio │ │ │ │ ├── PlayQuickSongMessageHandler.java │ │ │ │ ├── PlaySongMessageHandler.java │ │ │ │ └── PlaySoundMessageHandler.java │ │ │ │ ├── camera │ │ │ │ ├── CutsceneCameraLookToMessageHandler.java │ │ │ │ ├── CutsceneCameraMoveToMessageHandler.java │ │ │ │ ├── CutsceneExitMessageHandler.java │ │ │ │ └── ShakeCameraMessageHandler.java │ │ │ │ ├── chat │ │ │ │ ├── ForcedPrivateMessageHandler.java │ │ │ │ ├── FriendChangedWorldMessageHandler.java │ │ │ │ ├── ReceiveChatboxMessageHandler.java │ │ │ │ ├── ReceivePrivateMessageHandler.java │ │ │ │ ├── SetChatModesMessageHandler.java │ │ │ │ ├── SetFriendsListStatusMessageHandler.java │ │ │ │ └── UpdateIgnoreListMessageHandler.java │ │ │ │ ├── config │ │ │ │ ├── ResetVarbitsMessageHandler.java │ │ │ │ ├── ResetVarpsMessageHandler.java │ │ │ │ └── SetVarpValueMessageHandler.java │ │ │ │ ├── console │ │ │ │ ├── ReceiveConsoleCommandMessageHandler.java │ │ │ │ └── ReceiveConsoleLogMessageHandler.java │ │ │ │ ├── misc │ │ │ │ ├── FlashTabIconMessageHandler.java │ │ │ │ ├── LogoutMessageHandler.java │ │ │ │ ├── SetCurrentTabMessageHandler.java │ │ │ │ ├── SetHintIconMessageHandler.java │ │ │ │ ├── SetMinimapStateMessageHandler.java │ │ │ │ ├── SetMultiCombatStateMessageHandler.java │ │ │ │ ├── SetSystemUpdateTimeMessageHandler.java │ │ │ │ ├── TransformPlayerToObjectMessageHandler.java │ │ │ │ ├── UpdateCarryWeightMessageHandler.java │ │ │ │ ├── UpdatePlayerOptionsMessageHandler.java │ │ │ │ ├── UpdateRunEnergyMessageHandler.java │ │ │ │ └── UpdateSkillMessageHandler.java │ │ │ │ ├── region │ │ │ │ ├── ClearChunkMessageHandler.java │ │ │ │ ├── LoadConstructedRegionMessageHandler.java │ │ │ │ ├── LoadStandardRegionMessageHandler.java │ │ │ │ └── UpdateReferencePositionMessageHandler.java │ │ │ │ ├── updating │ │ │ │ ├── ClearLocalPlayerDestinationMessageHandler.java │ │ │ │ ├── ResetAllActorAnimationsMessageHandler.java │ │ │ │ ├── SetLocalPlayerPositionMessageHandler.java │ │ │ │ ├── UpdateNPCsMessageHandler.java │ │ │ │ └── UpdatePlayersMessageHandler.java │ │ │ │ ├── widget │ │ │ │ ├── SetWidgetPositionMessageHandler.java │ │ │ │ ├── SetWidgetScrollPositionMessageHandler.java │ │ │ │ ├── container │ │ │ │ │ ├── ClearWidgetItemsMessageHandler.java │ │ │ │ │ ├── UpdateAllWidgetItemsMessageHandler.java │ │ │ │ │ └── UpdateSpecificWidgetItemsMessageHandler.java │ │ │ │ ├── input │ │ │ │ │ ├── ShowNumberInputWidgetMessageHandler.java │ │ │ │ │ └── ShowTextInputWidgetMessageHandler.java │ │ │ │ ├── model │ │ │ │ │ ├── AnimateWidgetModelMessageHandler.java │ │ │ │ │ ├── RotateWidgetModelMessageHandler.java │ │ │ │ │ ├── SetWidgetItemModelMessageHandler.java │ │ │ │ │ ├── SetWidgetLocalPlayerChatheadModelMessageHandler.java │ │ │ │ │ ├── SetWidgetModelMessageHandler.java │ │ │ │ │ ├── SetWidgetModelRotationSpeedMessageHandler.java │ │ │ │ │ └── SetWidgetNPCChatheadModelMessageHandler.java │ │ │ │ ├── text │ │ │ │ │ ├── SetWidgetTextColorMessageHandler.java │ │ │ │ │ └── SetWidgetTextMessageHandler.java │ │ │ │ └── visibility │ │ │ │ │ ├── CloseAllWidgetsMessageHandler.java │ │ │ │ │ ├── ReplaceTabWidgetMessageHandler.java │ │ │ │ │ ├── SetReportAbuseWidgetMessageHandler.java │ │ │ │ │ ├── SetWidgetHiddenMessageHandler.java │ │ │ │ │ ├── ShowChatboxWidgetMessageHandler.java │ │ │ │ │ ├── ShowFullScreenWidgetMessageHandler.java │ │ │ │ │ ├── ShowPermanentChatboxWidgetMessageHandler.java │ │ │ │ │ ├── ShowScreenWidgetMessageHandler.java │ │ │ │ │ ├── ShowTabAndScreenWidgetMessageHandler.java │ │ │ │ │ ├── ShowTabWidgetMessageHandler.java │ │ │ │ │ └── ShowWalkableScreenWidgetMessageHandler.java │ │ │ │ └── world │ │ │ │ ├── CreateProjectileMessageHandler.java │ │ │ │ ├── CreateStationaryGFXMessageHandler.java │ │ │ │ ├── PlaySoundAtPositionMessageHandler.java │ │ │ │ ├── item │ │ │ │ ├── AddGroundItemMessageHandler.java │ │ │ │ ├── RemoveGroundItemMessageHandler.java │ │ │ │ └── UpdateGroundItemAmountMessageHandler.java │ │ │ │ └── object │ │ │ │ ├── CreateObjectMessageHandler.java │ │ │ │ ├── RemoveObjectMessageHandler.java │ │ │ │ └── RotateAnimateObjectMessageHandler.java │ │ ├── inbound │ │ │ ├── BulkInboundMessage.java │ │ │ ├── audio │ │ │ │ ├── PlayQuickSongInboundMessage.java │ │ │ │ ├── PlaySongInboundMessage.java │ │ │ │ └── PlaySoundInboundMessage.java │ │ │ ├── camera │ │ │ │ ├── CutsceneCameraLookToInboundMessage.java │ │ │ │ ├── CutsceneCameraMoveToInboundMessage.java │ │ │ │ ├── CutsceneExitInboundMessage.java │ │ │ │ └── ShakeCameraInboundMessage.java │ │ │ ├── chat │ │ │ │ ├── ForcedPrivateMessageInboundMessage.java │ │ │ │ ├── FriendChangedWorldInboundMessage.java │ │ │ │ ├── ReceiveChatboxMessageInboundMessage.java │ │ │ │ ├── ReceivePrivateMessageInboundMessage.java │ │ │ │ ├── SetChatModesInboundMessage.java │ │ │ │ ├── SetFriendsListStatusInboundMessage.java │ │ │ │ └── UpdateIgnoreListInboundMessage.java │ │ │ ├── config │ │ │ │ ├── ResetVarbitsInboundMessage.java │ │ │ │ ├── ResetVarpsInboundMessage.java │ │ │ │ └── SetVarpValueInboundMessage.java │ │ │ ├── console │ │ │ │ ├── ReceiveConsoleCommandMessage.java │ │ │ │ └── ReceiveConsoleLogMessage.java │ │ │ ├── misc │ │ │ │ ├── FlashTabIconInboundMessage.java │ │ │ │ ├── LogoutMessage.java │ │ │ │ ├── SetCurrentTabInboundMessage.java │ │ │ │ ├── SetHintIconInboundMessage.java │ │ │ │ ├── SetMinimapStateInboundMessage.java │ │ │ │ ├── SetMultiCombatStateInboundMessage.java │ │ │ │ ├── SetSystemUpdateTimeInboundMessage.java │ │ │ │ ├── TransformPlayerToObjectInboundMessage.java │ │ │ │ ├── UpdateCarryWeightMessage.java │ │ │ │ ├── UpdatePlayerOptionsInboundMessage.java │ │ │ │ ├── UpdateRunEnergyMessage.java │ │ │ │ └── UpdateSkillMessage.java │ │ │ ├── region │ │ │ │ ├── ClearChunkInboundMessage.java │ │ │ │ ├── LoadConstructedRegionInboundMessage.java │ │ │ │ ├── LoadStandardRegionInboundMessage.java │ │ │ │ └── UpdateReferencePositionInboundMessage.java │ │ │ ├── updating │ │ │ │ ├── ClearLocalPlayerDestinationInboundMessage.java │ │ │ │ ├── ResetAllActorAnimationsInboundMessage.java │ │ │ │ ├── SetLocalPlayerPositionInboundMessage.java │ │ │ │ ├── UpdateNPCsInboundMessage.java │ │ │ │ ├── UpdatePlayersInboundMessage.java │ │ │ │ ├── movement │ │ │ │ │ ├── ActorGroupMovementUpdate.java │ │ │ │ │ ├── LocalPlayerMovementUpdate.java │ │ │ │ │ └── MovementUpdate.java │ │ │ │ └── registration │ │ │ │ │ ├── ActorGroupRegistrationUpdate.java │ │ │ │ │ ├── ActorRegistration.java │ │ │ │ │ └── NPCRegistration.java │ │ │ ├── widget │ │ │ │ ├── SetWidgetPositionInboundMessage.java │ │ │ │ ├── SetWidgetScrollPositionInboundMessage.java │ │ │ │ ├── container │ │ │ │ │ ├── ClearWidgetItemsInboundMessage.java │ │ │ │ │ ├── UpdateAllWidgetItemsInboundMessage.java │ │ │ │ │ ├── UpdateSpecificWidgetItemsInboundMessage.java │ │ │ │ │ └── WidgetItem.java │ │ │ │ ├── input │ │ │ │ │ ├── ShowNumberInputWidgetInboundMessage.java │ │ │ │ │ └── ShowTextInputWidgetInboundMessage.java │ │ │ │ ├── model │ │ │ │ │ ├── AnimateWidgetModelInboundMessage.java │ │ │ │ │ ├── RotateWidgetModelInboundMessage.java │ │ │ │ │ ├── SetWidgetItemModelInboundMessage.java │ │ │ │ │ ├── SetWidgetLocalPlayerChatheadModelInboundMessage.java │ │ │ │ │ ├── SetWidgetModelInboundMessage.java │ │ │ │ │ ├── SetWidgetModelRotationSpeedInboundMessage.java │ │ │ │ │ └── SetWidgetNPCChatheadModelInboundMessage.java │ │ │ │ ├── text │ │ │ │ │ ├── SetWidgetTextColorInboundMessage.java │ │ │ │ │ └── SetWidgetTextInboundMessage.java │ │ │ │ └── visibility │ │ │ │ │ ├── CloseAllWidgetsInboundMessage.java │ │ │ │ │ ├── ReplaceTabWidgetInboundMessage.java │ │ │ │ │ ├── SetReportAbuseWidgetInboundMessage.java │ │ │ │ │ ├── SetWidgetHiddenInboundMessage.java │ │ │ │ │ ├── ShowChatboxWidgetInboundMessage.java │ │ │ │ │ ├── ShowFullScreenWidgetInboundMessage.java │ │ │ │ │ ├── ShowPermanentChatboxWidgetInboundMessage.java │ │ │ │ │ ├── ShowScreenWidgetInboundMessage.java │ │ │ │ │ ├── ShowTabAndScreenWidgetInboundMessage.java │ │ │ │ │ ├── ShowTabWidgetInboundMessage.java │ │ │ │ │ └── ShowWalkableScreenWidgetInboundMessage.java │ │ │ └── world │ │ │ │ ├── CreateProjectileInboundMessage.java │ │ │ │ ├── CreateStationaryGFXInboundMessage.java │ │ │ │ ├── PlaySoundAtPositionInboundMessage.java │ │ │ │ ├── item │ │ │ │ ├── AddGroundItemInboundMessage.java │ │ │ │ ├── RemoveGroundItemInboundMessage.java │ │ │ │ └── UpdateGroundItemAmountInboundMessage.java │ │ │ │ └── object │ │ │ │ ├── CreateObjectInboundMessage.java │ │ │ │ ├── RemoveObjectInboundMessage.java │ │ │ │ └── RotateAnimateObjectInboundMessage.java │ │ └── outbound │ │ │ ├── WalkOutboundMessage.java │ │ │ ├── chat │ │ │ ├── AcceptRequestOutboundMessage.java │ │ │ ├── ChatCommandOutboundMessage.java │ │ │ ├── ModifySocialListOutboundMessage.java │ │ │ ├── SendChatMessageOutboundMessage.java │ │ │ ├── SendPrivateMessageOutboundMessage.java │ │ │ └── SetChatOptionsOutboundMessage.java │ │ │ ├── console │ │ │ └── ConsoleCommandOutboundMessage.java │ │ │ ├── examine │ │ │ ├── ExamineItemOutboundMessage.java │ │ │ ├── ExamineNPCOutboundMessage.java │ │ │ └── ExamineObjectOutboundMessage.java │ │ │ ├── interactions │ │ │ ├── NPCInteractionOutboundMessage.java │ │ │ ├── ObjectInteractionOutboundMessage.java │ │ │ ├── PlayerInteractionOutboundMessage.java │ │ │ ├── WidgetV1ItemInteractionOutboundMessage.java │ │ │ ├── WidgetV2ItemInteractionOutboundMessage.java │ │ │ └── WorldItemInteractionOutboundMessage.java │ │ │ ├── magic │ │ │ ├── BaseCastMagicOutboundMessage.java │ │ │ ├── CastMagicOnNPCOutboundMessage.java │ │ │ ├── CastMagicOnObjectOutboundMessage.java │ │ │ ├── CastMagicOnPlayerOutboundMessage.java │ │ │ ├── CastMagicOnWidgetItemOutboundMessage.java │ │ │ └── CastMagicOnWorldItemOutboundMessage.java │ │ │ ├── misc │ │ │ └── ClickFlashingTabIconOutboundMessage.java │ │ │ ├── useitem │ │ │ ├── BaseUseItemOutboundMessage.java │ │ │ ├── UseItemOnNPCOutboundMessage.java │ │ │ ├── UseItemOnObjectOutboundMessage.java │ │ │ ├── UseItemOnPlayerOutboundMessage.java │ │ │ ├── UseItemOnWidgetItemOutboundMessage.java │ │ │ └── UseItemOnWorldItemOutboundMessage.java │ │ │ └── widget │ │ │ ├── CloseWidgetsOutboundMessage.java │ │ │ ├── container │ │ │ ├── DragWidgetItemOutboundMessage.java │ │ │ └── DropWidgetItemOutboundMessage.java │ │ │ └── input │ │ │ ├── ClickPleaseWaitWidgetOutboundMessage.java │ │ │ ├── ClickWidgetButtonOutboundMessage.java │ │ │ ├── SubmitAppearanceOutboundMessage.java │ │ │ ├── SubmitChatboxWidgetNameInputOutboundMessage.java │ │ │ ├── SubmitChatboxWidgetNumericInputOutboundMessage.java │ │ │ └── SubmitReportAbuseOutboundMessage.java │ ├── net │ │ ├── ISAAC.java │ │ ├── IUpdateServer.java │ │ ├── IncomingPackets.java │ │ ├── OutgoingPackets.java │ │ ├── PacketBuffer.java │ │ ├── PacketType.java │ │ ├── UpdateServer.java │ │ ├── UpdateServerNode.java │ │ ├── VariableLengthPacketBuffer.java │ │ └── codec │ │ │ ├── MessageDecoder.java │ │ │ ├── MessageEncoder.java │ │ │ ├── MessagePacketCodec.java │ │ │ ├── README.md │ │ │ └── runejs435 │ │ │ ├── RuneJS435PacketCodec.java │ │ │ ├── decoder │ │ │ ├── BulkMessageDecoder.java │ │ │ ├── audio │ │ │ │ ├── PlayQuickSongMessageDecoder.java │ │ │ │ ├── PlaySongMessageDecoder.java │ │ │ │ └── PlaySoundMessageDecoder.java │ │ │ ├── camera │ │ │ │ ├── CutsceneCameraLookToMessageDecoder.java │ │ │ │ ├── CutsceneCameraMoveToMessageDecoder.java │ │ │ │ ├── CutsceneExitMessageDecoder.java │ │ │ │ └── ShakeCameraMessageDecoder.java │ │ │ ├── chat │ │ │ │ ├── ForcedPrivateMessageDecoder.java │ │ │ │ ├── FriendChangedWorldMessageDecoder.java │ │ │ │ ├── ReceiveChatboxMessageDecoder.java │ │ │ │ ├── ReceivePrivateMessageDecoder.java │ │ │ │ ├── SetChatModesMessageDecoder.java │ │ │ │ ├── SetFriendsListStatusMessageDecoder.java │ │ │ │ └── UpdateIgnoreListMessageDecoder.java │ │ │ ├── config │ │ │ │ ├── ResetVarbitsMessageDecoder.java │ │ │ │ ├── ResetVarpsMessageDecoder.java │ │ │ │ ├── SetVarpByteMessageDecoder.java │ │ │ │ └── SetVarpIntMessageDecoder.java │ │ │ ├── console │ │ │ │ ├── ReceiveConsoleCommandMessageDecoder.java │ │ │ │ └── ReceiveConsoleLogMessageDecoder.java │ │ │ ├── misc │ │ │ │ ├── FlashTabIconMessageDecoder.java │ │ │ │ ├── LogoutMessageDecoder.java │ │ │ │ ├── SetCurrentTabMessageDecoder.java │ │ │ │ ├── SetHintIconMessageDecoder.java │ │ │ │ ├── SetMinimapStateMessageDecoder.java │ │ │ │ ├── SetMultiCombatStateMessageDecoder.java │ │ │ │ ├── SetSystemUpdateTimeMessageDecoder.java │ │ │ │ ├── TransformPlayerToObjectMessageDecoder.java │ │ │ │ ├── UpdateCarryWeightMessageDecoder.java │ │ │ │ ├── UpdatePlayerOptionsMessageDecoder.java │ │ │ │ ├── UpdateRunEnergyMessageDecoder.java │ │ │ │ └── UpdateSkillMessageDecoder.java │ │ │ ├── region │ │ │ │ ├── ClearChunkMessageDecoder.java │ │ │ │ ├── LoadConstructedRegionMessageDecoder.java │ │ │ │ ├── LoadStandardRegionMessageDecoder.java │ │ │ │ └── UpdateReferencePositionMessageDecoder.java │ │ │ ├── updating │ │ │ │ ├── ClearLocalPlayerDestinationMessageDecoder.java │ │ │ │ ├── ResetAllActorAnimationsMessageDecoder.java │ │ │ │ ├── SetLocalPlayerPositionMessageDecoder.java │ │ │ │ ├── UpdateDecoderHelpers.java │ │ │ │ ├── UpdateNPCsMessageDecoder.java │ │ │ │ └── UpdatePlayersMessageDecoder.java │ │ │ ├── widget │ │ │ │ ├── SetWidgetPositionMessageDecoder.java │ │ │ │ ├── SetWidgetScrollPositionMessageDecoder.java │ │ │ │ ├── container │ │ │ │ │ ├── ClearWidgetItemsMessageDecoder.java │ │ │ │ │ ├── UpdateAllWidgetItemsMessageDecoder.java │ │ │ │ │ └── UpdateSpecificWidgetItemsMessageDecoder.java │ │ │ │ ├── input │ │ │ │ │ ├── ShowNumberInputWidgetMessageDecoder.java │ │ │ │ │ └── ShowTextInputWidgetMessageDecoder.java │ │ │ │ ├── model │ │ │ │ │ ├── AnimateWidgetModelMessageDecoder.java │ │ │ │ │ ├── RotateWidgetModelMessageDecoder.java │ │ │ │ │ ├── SetWidgetItemModelMessageDecoder.java │ │ │ │ │ ├── SetWidgetLocalPlayerChatheadModelMessageDecoder.java │ │ │ │ │ ├── SetWidgetModelMessageDecoder.java │ │ │ │ │ ├── SetWidgetModelRotationSpeedMessageDecoder.java │ │ │ │ │ └── SetWidgetNPCChatheadModelMessageDecoder.java │ │ │ │ ├── text │ │ │ │ │ ├── SetWidgetTextColorMessageDecoder.java │ │ │ │ │ └── SetWidgetTextMessageDecoder.java │ │ │ │ └── visibility │ │ │ │ │ ├── CloseAllWidgetsMessageDecoder.java │ │ │ │ │ ├── ReplaceTabWidgetMessageDecoder.java │ │ │ │ │ ├── SetReportAbuseWidgetMessageDecoder.java │ │ │ │ │ ├── SetWidgetHiddenMessageDecoder.java │ │ │ │ │ ├── ShowChatboxWidgetMessageDecoder.java │ │ │ │ │ ├── ShowFullScreenWidgetMessageDecoder.java │ │ │ │ │ ├── ShowPermanentChatboxWidgetMessageDecoder.java │ │ │ │ │ ├── ShowScreenWidgetMessageDecoder.java │ │ │ │ │ ├── ShowTabAndScreenWidgetMessageDecoder.java │ │ │ │ │ ├── ShowTabWidgetMessageDecoder.java │ │ │ │ │ └── ShowWalkableScreenWidgetMessageDecoder.java │ │ │ └── world │ │ │ │ ├── CreateProjectileMessageDecoder.java │ │ │ │ ├── CreateStationaryGFXMessageDecoder.java │ │ │ │ ├── PlaySoundAtPositionMessageDecoder.java │ │ │ │ ├── item │ │ │ │ ├── AddGroundItemExcludePlayerMessageDecoder.java │ │ │ │ ├── AddGroundItemMessageDecoder.java │ │ │ │ ├── RemoveGroundItemMessageDecoder.java │ │ │ │ └── UpdateGroundItemAmountMessageDecoder.java │ │ │ │ └── object │ │ │ │ ├── CreateObjectMessageDecoder.java │ │ │ │ ├── RemoveObjectMessageDecoder.java │ │ │ │ └── RotateAnimateObjectMessageDecoder.java │ │ │ └── encoder │ │ │ ├── WalkMessageEncoder.java │ │ │ ├── chat │ │ │ ├── AcceptRequestMessageEncoder.java │ │ │ ├── ChatCommandMessageEncoder.java │ │ │ ├── ModifySocialListMessageEncoder.java │ │ │ ├── SendChatMessageMessageEncoder.java │ │ │ ├── SendPrivateMessageMessageEncoder.java │ │ │ └── SetChatOptionsMessageEncoder.java │ │ │ ├── console │ │ │ └── ConsoleCommandMessageEncoder.java │ │ │ ├── examine │ │ │ ├── ExamineItemMessageEncoder.java │ │ │ ├── ExamineNPCMessageEncoder.java │ │ │ └── ExamineObjectMessageEncoder.java │ │ │ ├── interactions │ │ │ ├── NPCInteractionMessageEncoder.java │ │ │ ├── ObjectInteractionMessageEncoder.java │ │ │ ├── PlayerInteractionMessageEncoder.java │ │ │ ├── WidgetV1ItemInteractionMessageEncoder.java │ │ │ ├── WidgetV2ItemInteractionMessageEncoder.java │ │ │ └── WorldItemInteractionMessageEncoder.java │ │ │ ├── magic │ │ │ ├── CastMagicOnNPCMessageEncoder.java │ │ │ ├── CastMagicOnObjectMessageEncoder.java │ │ │ ├── CastMagicOnPlayerMessageEncoder.java │ │ │ ├── CastMagicOnWidgetItemMessageEncoder.java │ │ │ └── CastMagicOnWorldItemMessageEncoder.java │ │ │ ├── misc │ │ │ └── ClickFlashingTabIconMessageEncoder.java │ │ │ ├── useitem │ │ │ ├── UseItemOnNPCMessageEncoder.java │ │ │ ├── UseItemOnObjectMessageEncoder.java │ │ │ ├── UseItemOnPlayerMessageEncoder.java │ │ │ ├── UseItemOnWidgetItemMessageEncoder.java │ │ │ └── UseItemOnWorldItemMessageEncoder.java │ │ │ └── widget │ │ │ ├── CloseWidgetsMessageEncoder.java │ │ │ ├── container │ │ │ ├── DragWidgetItemMessageEncoder.java │ │ │ └── DropWidgetItemMessageEncoder.java │ │ │ └── input │ │ │ ├── ClickPleaseWaitWidgetMessageEncoder.java │ │ │ ├── ClickWidgetButtonMessageEncoder.java │ │ │ ├── SubmitAppearanceMessageEncoder.java │ │ │ ├── SubmitChatboxWidgetNameInputMessageEncoder.java │ │ │ ├── SubmitChatboxWidgetNumericInputMessageEncoder.java │ │ │ └── SubmitReportAbuseMessageEncoder.java │ ├── node │ │ ├── CachedNode.java │ │ ├── HashTable.java │ │ ├── Node.java │ │ ├── NodeCache.java │ │ ├── NodeQueue.java │ │ └── OnDemandRequest.java │ ├── ondemand │ │ └── js5 │ │ │ ├── JS5UpdateServerConnectionManager.java │ │ │ └── exceptions │ │ │ ├── JS5CRCException.java │ │ │ ├── JS5ConnectException.java │ │ │ ├── JS5ConnectFullException.java │ │ │ ├── JS5ConnectOutOfDateException.java │ │ │ ├── JS5Exception.java │ │ │ └── JS5IOException.java │ ├── renderer │ │ ├── ScreenRenderer.java │ │ └── SoftwareRenderer.java │ ├── scene │ │ ├── CameraTileVisibility.java │ │ ├── GroundItemTile.java │ │ ├── InteractiveObject.java │ │ ├── InteractiveObjectTemporary.java │ │ ├── Point2d.java │ │ ├── Point3d.java │ │ ├── Scene.java │ │ ├── SceneCamera.java │ │ ├── SceneCluster.java │ │ ├── SceneRenderer.java │ │ ├── Util3d.java │ │ ├── camera │ │ │ ├── Camera.java │ │ │ ├── CameraAdjustmentSpeed.java │ │ │ ├── CameraRotation.java │ │ │ ├── CutsceneCamera.java │ │ │ ├── GameCamera.java │ │ │ └── SphericalCamera.java │ │ ├── tile │ │ │ ├── ComplexTile.java │ │ │ ├── FloorDecoration.java │ │ │ ├── GenericTile.java │ │ │ ├── SceneTile.java │ │ │ ├── Wall.java │ │ │ └── WallDecoration.java │ │ └── util │ │ │ └── CollisionMap.java │ ├── sound │ │ ├── AbstractSound.java │ │ ├── MidiPlayer.java │ │ ├── MusicSystem.java │ │ ├── PcmPlayer.java │ │ ├── PcmStream.java │ │ ├── PcmStreamMixer.java │ │ ├── PcmStreamMixerListener.java │ │ ├── RawPcmStream.java │ │ ├── RawSound.java │ │ └── SoundSystem.java │ └── util │ │ ├── BitUtils.java │ │ ├── MillisTimer.java │ │ ├── NanoTimer.java │ │ ├── PerlinNoise.java │ │ ├── RSAConfiguration.java │ │ ├── Signlink.java │ │ ├── SignlinkNode.java │ │ ├── TextUtils.java │ │ └── Timer.java │ └── whitelabel │ └── Images.java └── resources └── logo.png /.github/workflows/release-body.md: -------------------------------------------------------------------------------- 1 | # Release notes 2 | 3 | For your convenience, we provide Java `.jar` file builds that can connect to the [server](https://github.com/runejs/server). 4 | 5 | ## Instructions 6 | 7 | To run the client, follow the steps in the [`README.md` file](https://github.com/runejs/refactored-client-435) - make sure to change the name of the `.jar` file to match your downloaded file name if needed: 8 | 9 | ```bash 10 | java -jar path/to/your/downloaded/client-435-0.3.jar 11 | ``` 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | bin/ 4 | 5 | # Models 6 | data/models/ 7 | 8 | # Log file 9 | *.log 10 | 11 | # BlueJ files 12 | *.ctxt 13 | 14 | # IntelliJ 15 | .idea/ 16 | *.iml 17 | 18 | # Mobile Tools for Java (J2ME) 19 | .mtj.tmp/ 20 | 21 | # Package Files # 22 | *.war 23 | *.nar 24 | *.ear 25 | *.zip 26 | *.tar.gz 27 | *.rar 28 | 29 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 30 | hs_err_pid* 31 | /config/client-config.yaml 32 | /config/runejs-client.yaml 33 | /config/client-435.conf.yaml 34 | 35 | # Gradle 36 | .gradle 37 | build/ 38 | artifacts/ 39 | 40 | .DS_Store 41 | .classpath 42 | .project 43 | .settings/org.eclipse.jdt.core.prefs 44 | 45 | # as of 2024-09-04, prebuilt dir is deprecated in favor of releases due to 46 | # increasing binary blob file sizes 47 | /prebuilt 48 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | // do not autoformat java files in this repository 3 | "[java]": { 4 | "editor.formatOnSave": false, 5 | "editor.formatOnPaste": false, 6 | "editor.formatOnType": false, 7 | }, 8 | } -------------------------------------------------------------------------------- /META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Main-Class: Main 3 | Class-Path: snakeyaml-1.26.jar 4 | 5 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java' 3 | id 'application' 4 | } 5 | 6 | group = 'tech.henning' 7 | version = '0.3' 8 | 9 | sourceCompatibility = 8 10 | targetCompatibility = 8 11 | 12 | repositories { 13 | mavenCentral() 14 | } 15 | 16 | application { 17 | mainClassName 'org.runejs.client.GameShell' 18 | } 19 | 20 | jar { 21 | dependsOn configurations.runtimeClasspath 22 | 23 | manifest { 24 | attributes("MAIN-CLASS": application.mainClassName) 25 | } 26 | 27 | from { 28 | sourceSets.main.output 29 | sourceSets.main.resources 30 | configurations.runtimeClasspath.findAll { it.name.endsWith('jar') }.collect { zipTree(it) } 31 | } 32 | } 33 | 34 | dependencies { 35 | implementation group: 'org.yaml', name: 'snakeyaml', version:'1.26' 36 | } 37 | -------------------------------------------------------------------------------- /config/client-435.conf.example.yaml: -------------------------------------------------------------------------------- 1 | net: 2 | address: 127.0.0.1 3 | game_port: 43594 4 | cache: 5 | cacheDir: .filestore_435 6 | rsa: 7 | rsaPub: 65537 8 | rsaModulus: 119568088839203297999728368933573315070738693395974011872885408638642676871679245723887367232256427712869170521351089799352546294030059890127723509653145359924771433131004387212857375068629466435244653901851504845054452735390701003613803443469723435116497545687393297329052988014281948392136928774011011998343 9 | login: 10 | useStaticCredentials: true 11 | username: a 12 | password: a 13 | game: 14 | roofsEnabled: true 15 | freeTeleports: false 16 | debugContextMenu: true 17 | renderFlames: true 18 | resizable: false 19 | shiftClickModifier: true 20 | serverDisplayName: Build 435 21 | -------------------------------------------------------------------------------- /data/loc.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runejs/refactored-client-435/00f0ec2b6c24ccdc3695145077591cc3d9c57388/data/loc.dat -------------------------------------------------------------------------------- /data/loc.idx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runejs/refactored-client-435/00f0ec2b6c24ccdc3695145077591cc3d9c57388/data/loc.idx -------------------------------------------------------------------------------- /data/objects/377_OBJECTS.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runejs/refactored-client-435/00f0ec2b6c24ccdc3695145077591cc3d9c57388/data/objects/377_OBJECTS.dat -------------------------------------------------------------------------------- /data/objects/377_OBJECTS.idx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runejs/refactored-client-435/00f0ec2b6c24ccdc3695145077591cc3d9c57388/data/objects/377_OBJECTS.idx -------------------------------------------------------------------------------- /data/osrsmodels.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runejs/refactored-client-435/00f0ec2b6c24ccdc3695145077591cc3d9c57388/data/osrsmodels.zip -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runejs/refactored-client-435/00f0ec2b6c24ccdc3695145077591cc3d9c57388/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'client-435' 2 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/Class40_Sub7.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client; 2 | 3 | import org.runejs.client.node.Node; 4 | 5 | public class Class40_Sub7 extends Node { 6 | 7 | public RSString aClass1_2124; 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/GameErrorHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client; 2 | 3 | public interface GameErrorHandler { 4 | void handleGameError(String errorMessage); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/Interface3.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client; 2 | 3 | public interface Interface3 { 4 | int[] getTexturePixels(int textureId); 5 | 6 | boolean isTextureOpaque(int textureId); 7 | 8 | int getAverageTextureColour(int i); 9 | 10 | boolean method15(); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/MouseCapturer.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client; 2 | 3 | import org.runejs.client.input.MouseHandler; 4 | 5 | public class MouseCapturer implements Runnable { 6 | public Object objectLock; 7 | public boolean aBoolean913 = true; 8 | public int[] coordsY; 9 | public int coord; 10 | public int[] coordsX; 11 | 12 | public MouseCapturer() { 13 | objectLock = new Object(); 14 | coord = 0; 15 | coordsY = new int[500]; 16 | coordsX = new int[500]; 17 | } 18 | 19 | public void run() { 20 | while(aBoolean913) { 21 | synchronized(objectLock) { 22 | if(coord < 500) { 23 | coordsX[coord] = MouseHandler.mouseX; 24 | coordsY[coord] = MouseHandler.mouseY; 25 | coord++; 26 | } 27 | } 28 | MovedStatics.threadSleep(50L); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/ProducingGraphicsBuffer.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client; 2 | 3 | import org.runejs.client.media.Rasterizer; 4 | 5 | import java.awt.*; 6 | 7 | public abstract class ProducingGraphicsBuffer { 8 | public int height; 9 | public int width; 10 | public int[] pixels; 11 | public Image image; 12 | 13 | public abstract void method1041(int i, int i_2_, Component component, int i_3_); 14 | 15 | public abstract void drawGraphics(int x, int y, Graphics graphics); 16 | public abstract void paintComponent(int x, int y, Graphics graphics); 17 | 18 | public void prepareRasterizer() { 19 | Rasterizer.prepare(pixels, width, height); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/RSCanvas.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client; 2 | 3 | import java.awt.*; 4 | 5 | public class RSCanvas extends Canvas { 6 | 7 | public Component aComponent49; 8 | 9 | public RSCanvas(Component arg0) { 10 | aComponent49 = arg0; 11 | } 12 | 13 | @Override 14 | public void repaint() { 15 | // super.repaint(); 16 | } 17 | 18 | public void paint(Graphics arg0) { 19 | aComponent49.paint(arg0); 20 | } 21 | 22 | public void update(Graphics arg0) { 23 | aComponent49.update(arg0); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/RSRuntimeException.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client; 2 | 3 | public class RSRuntimeException extends RuntimeException { 4 | public Throwable aThrowable1652; 5 | public String aString1653; 6 | 7 | public RSRuntimeException(Throwable arg0, String arg1) { 8 | aString1653 = arg1; 9 | aThrowable1652 = arg0; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/cs/GoSubFrame.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.cs; 2 | 3 | public class GoSubFrame { 4 | 5 | public ClientScript script; 6 | public int[] intLocals; 7 | public String[] stringLocals; 8 | public int pc = -1; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/def/EntityDefinition.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.def; 2 | 3 | import org.runejs.client.cache.def.loading.CacheDefinition; 4 | 5 | public interface EntityDefinition extends CacheDefinition { 6 | public String getName(); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/def/FramemapDefinition.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.def; 2 | 3 | import org.runejs.client.cache.def.loading.CacheDefinition; 4 | import org.runejs.client.cache.def.loading.DefinitionLoader; 5 | import org.runejs.client.node.Node; 6 | import org.runejs.client.io.Buffer; 7 | 8 | public class FramemapDefinition extends Node implements CacheDefinition { 9 | public int[][] frameMaps; 10 | public int length; 11 | public int id; 12 | public int[] types; 13 | 14 | public FramemapDefinition(int id, DefinitionLoader loader, byte[] data) { 15 | this.id = id; 16 | 17 | loader.load(this, new Buffer(data)); 18 | } 19 | 20 | @Override 21 | public int getId() { return this.id; } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/def/loading/CacheDefinition.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.def.loading; 2 | 3 | public interface CacheDefinition { 4 | int getId(); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/def/loading/DefinitionLoader.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.def.loading; 2 | 3 | import org.runejs.client.io.Buffer; 4 | 5 | public interface DefinitionLoader { 6 | TDefinition load(TDefinition definition, Buffer data); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/def/loading/rs435/UnderlayDefinitionLoader.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.def.loading.rs435; 2 | 3 | import org.runejs.client.cache.def.UnderlayDefinition; 4 | import org.runejs.client.cache.def.loading.DefinitionLoader; 5 | import org.runejs.client.io.Buffer; 6 | 7 | public class UnderlayDefinitionLoader implements DefinitionLoader { 8 | @Override 9 | public UnderlayDefinition load(UnderlayDefinition definition, Buffer data) { 10 | while(true) { 11 | int opcode = data.getUnsignedByte(); 12 | if(opcode == 0) { 13 | break; 14 | } 15 | readValue(definition, data, opcode); 16 | } 17 | 18 | return definition; 19 | } 20 | 21 | private void readValue(UnderlayDefinition definition, Buffer buffer, int opcode) { 22 | if(opcode == 1) { 23 | definition.color = buffer.getMediumBE(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/def/loading/rs435/VarPlayerDefinitionLoader.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.def.loading.rs435; 2 | 3 | import org.runejs.client.cache.def.VarPlayerDefinition; 4 | import org.runejs.client.cache.def.loading.DefinitionLoader; 5 | import org.runejs.client.io.Buffer; 6 | 7 | public class VarPlayerDefinitionLoader implements DefinitionLoader { 8 | @Override 9 | public VarPlayerDefinition load(VarPlayerDefinition definition, Buffer data) { 10 | while(true) { 11 | int opcode = data.getUnsignedByte(); 12 | if(opcode == 0) 13 | break; 14 | if(opcode == 5) 15 | definition.type = data.getUnsignedShortBE(); 16 | } 17 | 18 | return definition; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/def/loading/rs435/VarbitDefinitionLoader.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.def.loading.rs435; 2 | 3 | import org.runejs.client.cache.def.VarbitDefinition; 4 | import org.runejs.client.cache.def.loading.DefinitionLoader; 5 | import org.runejs.client.io.Buffer; 6 | 7 | public class VarbitDefinitionLoader implements DefinitionLoader { 8 | @Override 9 | public VarbitDefinition load(VarbitDefinition definition, Buffer data) { 10 | while(true) { 11 | int opCode = data.getUnsignedByte(); 12 | if(opCode == 0) 13 | break; 14 | if(opCode == 1) { 15 | definition.index = data.getUnsignedShortBE(); 16 | definition.leastSignificantBit = data.getUnsignedByte(); 17 | definition.mostSignificantBit = data.getUnsignedByte(); 18 | } 19 | } 20 | 21 | return definition; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/media/gameInterface/GameInterfaceType.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.media.gameInterface; 2 | 3 | public enum GameInterfaceType { 4 | LAYER, // 0 5 | UNKNOWN, // 1 6 | INVENTORY, // 2 7 | RECTANGLE, // 3 8 | TEXT, // 4 9 | GRAPHIC, // 5 10 | MODEL, // 6 11 | TEXT_INVENTORY, // 7 12 | IF1_TOOLTIP, // 8 13 | LINE; // 9 14 | public static GameInterfaceType get(int ordinal) { 15 | return GameInterfaceType.values()[ordinal]; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/media/gameInterface/InterfaceModelType.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.media.gameInterface; 2 | 3 | public enum InterfaceModelType { 4 | NULL, 5 | MODEL, 6 | NPC_CHATHEAD, 7 | LOCAL_PLAYER_CHATHEAD, 8 | ITEM, 9 | PLAYER; 10 | 11 | public static InterfaceModelType get(int ordinal) { 12 | return InterfaceModelType.values()[ordinal]; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/media/textUtils/TextColourNode.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.media.textUtils; 2 | 3 | public class TextColourNode { 4 | private TextColourNode previous = null; 5 | private TextColourNode next = null; 6 | private int colour; 7 | 8 | public TextColourNode(int colour) { 9 | this.colour = colour; 10 | } 11 | 12 | public int getColour() { 13 | return colour; 14 | } 15 | 16 | public void setNext(TextColourNode node) { 17 | this.next = node; 18 | } 19 | 20 | public TextColourNode getNext() { 21 | return this.next; 22 | } 23 | 24 | public TextColourNode getPrevious() { 25 | return this.previous; 26 | } 27 | 28 | public void setPrevious(TextColourNode node) { 29 | this.previous = node; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/media/textUtils/TextTagNode.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.media.textUtils; 2 | 3 | public class TextTagNode { 4 | private TextTagNode previous = null; 5 | private TextTagNode next = null; 6 | public String tag; 7 | 8 | public TextTagNode(String tag) { 9 | this.tag = tag; 10 | } 11 | 12 | public String applyTo(String string) { 13 | return tag + string; 14 | } 15 | 16 | public void setNext(TextTagNode node) { 17 | this.next = node; 18 | } 19 | 20 | public TextTagNode getNext() { 21 | return this.next; 22 | } 23 | 24 | public TextTagNode getPrevious() { 25 | return this.previous; 26 | } 27 | 28 | public void setPrevious(TextTagNode node) { 29 | this.previous = node; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/cache/system/CacheLocator.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.cache.system; 2 | 3 | public interface CacheLocator { 4 | String getCachePath(String homeDirectory) throws RuntimeException; 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/FrameRenderer.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame; 2 | 3 | public interface FrameRenderer extends Runnable { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/ScreenMode.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame; 2 | 3 | public enum ScreenMode { 4 | FIXED, 5 | RESIZABLE, 6 | FULLSCREEN; 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/AlphaCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.frame.console.Command; 4 | import org.runejs.client.frame.console.Console; 5 | 6 | public class AlphaCommand extends Command { 7 | public AlphaCommand() { 8 | super("alpha", "Toggles console background transparency"); 9 | } 10 | 11 | @Override 12 | public void execute(Console console, String[] cmdInput) { 13 | console.toggleAlpha(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/ClearCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.frame.console.Command; 4 | import org.runejs.client.frame.console.Console; 5 | 6 | public class ClearCommand extends Command { 7 | public ClearCommand() { 8 | super(new String[]{"clear", "cls"}, "Clears console output"); 9 | } 10 | 11 | @Override 12 | public void execute(Console console, String[] cmdInput) { 13 | console.setMessageCount(0); 14 | console.log("Cleared"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/DebugCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.frame.console.Command; 4 | import org.runejs.client.frame.console.Console; 5 | import org.runejs.Configuration; 6 | 7 | public class DebugCommand extends Command { 8 | public DebugCommand() { 9 | super(new String[]{"debug", "toggle_debug"}, "Toggles debug information"); 10 | } 11 | 12 | @Override 13 | public void execute(Console console, String[] cmdInput) { 14 | Configuration.DEBUG_CONTEXT = !Configuration.DEBUG_CONTEXT; 15 | if(Configuration.DEBUG_CONTEXT) { 16 | console.log("Debug information is now shown"); 17 | } else { 18 | console.log("Debug information is now hidden"); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/DebugViewCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.frame.ScreenController; 4 | import org.runejs.client.frame.console.Command; 5 | import org.runejs.client.frame.console.Console; 6 | 7 | public class DebugViewCommand extends Command { 8 | public DebugViewCommand() { 9 | super(new String[]{"debugview", "debug_view"}, "Toggles debug view"); 10 | } 11 | 12 | @Override 13 | public void execute(Console console, String[] cmdInput) { 14 | ScreenController.DebugView = !ScreenController.DebugView; 15 | if(ScreenController.DebugView) { 16 | console.log("Debug View is now Drawn"); 17 | } else { 18 | console.log("Debug View is now hidden"); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/DebugWalkCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.frame.DebugTools; 4 | import org.runejs.client.frame.console.Command; 5 | import org.runejs.client.frame.console.Console; 6 | 7 | public class DebugWalkCommand extends Command { 8 | public DebugWalkCommand() { 9 | super(new String[]{"debugwalk"}, "Toggles debug walkpath"); 10 | } 11 | 12 | @Override 13 | public void execute(Console console, String[] cmdInput) { 14 | DebugTools.walkpathEnabled = !DebugTools.walkpathEnabled; 15 | if(DebugTools.walkpathEnabled) { 16 | console.log("Walkpath is now drawn"); 17 | } else { 18 | console.log("Walkpath is now hidden"); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/DebugWidgetsCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.frame.console.Command; 4 | import org.runejs.client.frame.console.Console; 5 | import org.runejs.Configuration; 6 | 7 | public class DebugWidgetsCommand extends Command { 8 | public DebugWidgetsCommand() { 9 | super(new String[]{"dw", "debugwidget", "debugwidgets", "debug_widgets", "debug_widget"}, "Toggles widget debug information"); 10 | } 11 | 12 | @Override 13 | public void execute(Console console, String[] cmdInput) { 14 | Configuration.DEBUG_WIDGETS = !Configuration.DEBUG_WIDGETS; 15 | if(Configuration.DEBUG_WIDGETS) { 16 | console.log("Widget debug information is now shown"); 17 | } else { 18 | console.log("Widget debug information is now hidden"); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/FpsCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.MovedStatics; 4 | import org.runejs.client.frame.console.Command; 5 | import org.runejs.client.frame.console.Console; 6 | 7 | public class FpsCommand extends Command { 8 | public FpsCommand() { 9 | super(new String[]{"fps", "toggle_fps"}, "Toggles the FPS counter"); 10 | } 11 | 12 | @Override 13 | public void execute(Console console, String[] cmdInput) { 14 | MovedStatics.showFps = !MovedStatics.showFps; 15 | if(MovedStatics.showFps) { 16 | console.log("FPS is now shown"); 17 | } else { 18 | console.log("FPS is now hidden"); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/HelpCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.frame.console.Command; 4 | import org.runejs.client.frame.console.Console; 5 | 6 | import java.util.List; 7 | 8 | public class HelpCommand extends Command { 9 | private List commands; 10 | public HelpCommand(List commands) { 11 | super(new String[]{"help", "commands"}, "Search for item/npc/object names"); 12 | this.commands = commands; 13 | } 14 | 15 | @Override 16 | public void execute(Console console, String[] cmdInput) { 17 | console.log("Commands:"); 18 | commands.forEach(command -> { 19 | console.log(command.getPrintableHelp()); 20 | }); 21 | 22 | // printConsoleMessage("search [item | npc | object] [name] - Returns list of results", false); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/HideFpsCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.MovedStatics; 4 | import org.runejs.client.frame.console.Command; 5 | import org.runejs.client.frame.console.Console; 6 | 7 | public class HideFpsCommand extends Command { 8 | public HideFpsCommand() { 9 | super("hide_fps", "Hides FPS counter"); 10 | } 11 | 12 | @Override 13 | public void execute(Console console, String[] cmdInput) { 14 | MovedStatics.showFps = false; 15 | console.log("FPS is now hidden"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/InventoryCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.frame.console.Command; 4 | import org.runejs.client.frame.console.Console; 5 | 6 | public class InventoryCommand extends Command { 7 | public InventoryCommand() { 8 | super("inventory", "Lists items in the inventory"); 9 | } 10 | 11 | @Override 12 | public void execute(Console console, String[] cmdInput) { 13 | // Widget widget = Widget.forId(149); 14 | // console.log("Items:"); 15 | // for (int item = 0; item < widget.items.length; item++) { 16 | // if (widget.items[item] != -1) { 17 | // ItemDefinition.forId(widget.items[item], 10); 18 | // StringBuilder bldr = new StringBuilder(); 19 | // bldr. 20 | // 21 | // console.log(command.getPrintableHelp()); 22 | // } 23 | // } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/IpCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.frame.console.Command; 4 | import org.runejs.client.frame.console.Console; 5 | import org.runejs.Configuration; 6 | 7 | public class IpCommand extends Command { 8 | public IpCommand() { 9 | super(new String[]{"ip", "host"}, "Returns current server address"); 10 | } 11 | 12 | @Override 13 | public void execute(Console console, String[] cmdInput) { 14 | console.log("Server address: " + Configuration.SERVER_ADDRESS + ""); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/PlayerRightsCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.Game; 4 | import org.runejs.client.frame.console.Command; 5 | import org.runejs.client.frame.console.Console; 6 | 7 | public class PlayerRightsCommand extends Command { 8 | public PlayerRightsCommand() { 9 | super(new String[]{"rights", "playerrights"}, "Returns current player rights"); 10 | } 11 | 12 | @Override 13 | public void execute(Console console, String[] cmdInput) { 14 | console.log("Your player rights level: " + Game.playerRights + ""); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/RoofsCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.frame.console.Command; 4 | import org.runejs.client.frame.console.Console; 5 | import org.runejs.Configuration; 6 | 7 | public class RoofsCommand extends Command { 8 | public RoofsCommand() { 9 | super(new String[]{"toggleroofs", "roofs"}, "Toggles rendering roofs"); 10 | } 11 | 12 | @Override 13 | public void execute(Console console, String[] cmdInput) { 14 | Configuration.ROOFS_ENABLED = !Configuration.ROOFS_ENABLED; 15 | if(Configuration.ROOFS_ENABLED) { 16 | console.log("Roofs are now rendered"); 17 | } else { 18 | console.log("Roofs are now not rendered"); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/ServerCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.frame.console.Command; 4 | import org.runejs.client.frame.console.Console; 5 | import org.runejs.client.message.outbound.console.ConsoleCommandOutboundMessage; 6 | import org.runejs.client.net.OutgoingPackets; 7 | 8 | public class ServerCommand extends Command { 9 | public ServerCommand(String cmdStr, String help) { 10 | super(cmdStr.split("\\|"), help); 11 | } 12 | 13 | @Override 14 | public void execute(Console console, String[] cmdInput) { 15 | String fullCommand = String.join(" ", cmdInput); 16 | OutgoingPackets.sendMessage(new ConsoleCommandOutboundMessage(fullCommand)); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/frame/console/Commands/ShowFpsCommand.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.frame.console.Commands; 2 | 3 | import org.runejs.client.MovedStatics; 4 | import org.runejs.client.frame.console.Command; 5 | import org.runejs.client.frame.console.Console; 6 | 7 | public class ShowFpsCommand extends Command { 8 | public ShowFpsCommand() { 9 | super(new String[]{"displayfps", "show_fps"}, "Shows FPS counter"); 10 | } 11 | 12 | @Override 13 | public void execute(Console console, String[] cmdInput) { 14 | MovedStatics.showFps = true; 15 | console.log("FPS is now shown"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/login/LoginProtocol.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.login; 2 | 3 | public interface LoginProtocol { 4 | void process(); 5 | 6 | void reset(); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/login/LoginType.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.login; 2 | 3 | public enum LoginType { 4 | NEW_CONNECTION, 5 | RECONNECTION 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/media/VertexNormal.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.media; 2 | 3 | public class VertexNormal { 4 | public static boolean lowMemory = false; 5 | 6 | public int y; 7 | public int x; 8 | public int z; 9 | public int magnitude; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/media/renderable/Item.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.media.renderable; 2 | 3 | import org.runejs.client.cache.def.*; 4 | 5 | public class Item extends Renderable { 6 | public int itemCount; 7 | public int itemId; 8 | 9 | public Model getRotatedModel() { 10 | return ItemDefinition.forId(itemId, 10).asGroundStack(true, itemCount); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/media/renderable/Renderable.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.media.renderable; 2 | 3 | import org.runejs.client.node.CachedNode; 4 | import org.runejs.client.scene.camera.CameraRotation; 5 | 6 | public abstract class Renderable extends CachedNode { 7 | public int modelHeight = 1000; 8 | 9 | public void renderAtPoint(int arg0, CameraRotation cameraRotation, int x, int z, int y, int arg8) { 10 | Model class40_sub5_sub17_sub5 = getRotatedModel(); 11 | if(class40_sub5_sub17_sub5 != null) { 12 | modelHeight = class40_sub5_sub17_sub5.modelHeight; 13 | class40_sub5_sub17_sub5.renderAtPoint(arg0, cameraRotation, x, z, y, arg8); 14 | } 15 | } 16 | 17 | public Model getRotatedModel() { 18 | return null; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/InboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message; 2 | 3 | /** 4 | * An `InboundMessage` is a message that is sent from the server to the client. 5 | * 6 | * This interface is used to mark all inbound messages, so that they can be 7 | * decoded from incoming packets. 8 | */ 9 | public interface InboundMessage { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/OutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message; 2 | 3 | /** 4 | * An `OutboundMessage` is a message that is sent from the client to the server. 5 | * 6 | * This interface is used to mark all outbound messages, so that they can be 7 | * encoded into packets and sent. 8 | */ 9 | public interface OutboundMessage { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/MessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message handler is responsible for handling a specific type of message. 7 | * 8 | * @param The type of message to handle. 9 | */ 10 | public interface MessageHandler { 11 | /** 12 | * Handles the message, i.e. applies the message to the game state. 13 | */ 14 | void handle(TMessage message); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/README.md: -------------------------------------------------------------------------------- 1 | # Inbound message handlers 2 | 3 | Inbound message handlers are responsible for applying `InboundMessages` to the game state. They are registered with a `MessageHandlerRegistry`, and are invoked when a new message is received from the server. 4 | 5 | ## Creating a new handler 6 | 7 | First, create your `MessageHandler` to handle the message: 8 | 9 | ```java 10 | public class MyInboundMessageHandler implements MessageHandler { 11 | @Override 12 | public void handle(MyInboundMessage message) { 13 | // Handle the message 14 | } 15 | } 16 | ``` 17 | 18 | Then, register it with the `MessageHandlerRegistry`: 19 | 20 | ```java 21 | public class MyMessageHandlerRegistry extends MessageHandlerRegistry { 22 | public MyMessageHandlerRegistry() { 23 | super(); 24 | register(MyInboundMessage.class, new MyInboundMessageHandler()); 25 | } 26 | } 27 | ``` -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/audio/PlayQuickSongMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.audio; 2 | 3 | import org.runejs.client.message.handler.MessageHandler; 4 | import org.runejs.client.message.inbound.audio.PlayQuickSongInboundMessage; 5 | import org.runejs.client.sound.MusicSystem; 6 | 7 | public class PlayQuickSongMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(PlayQuickSongInboundMessage message) { 10 | MusicSystem.playSoundJingle(message.songTimeout, message.songId); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/audio/PlaySongMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.audio; 2 | 3 | import org.runejs.client.message.handler.MessageHandler; 4 | import org.runejs.client.message.inbound.audio.PlaySongInboundMessage; 5 | import org.runejs.client.sound.MusicSystem; 6 | 7 | public class PlaySongMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(PlaySongInboundMessage message) { 10 | MusicSystem.playSong(message.songId); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/audio/PlaySoundMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.audio; 2 | 3 | import org.runejs.client.message.handler.MessageHandler; 4 | import org.runejs.client.message.inbound.audio.PlaySoundInboundMessage; 5 | import org.runejs.client.sound.SoundSystem; 6 | 7 | public class PlaySoundMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(PlaySoundInboundMessage message) { 10 | 11 | SoundSystem.play(message.soundId, message.volume, message.delay); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/camera/CutsceneExitMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.camera; 2 | 3 | import org.runejs.client.Projectile; 4 | import org.runejs.client.media.renderable.actor.Player; 5 | import org.runejs.client.message.handler.MessageHandler; 6 | import org.runejs.client.message.inbound.camera.CutsceneExitInboundMessage; 7 | import org.runejs.client.scene.SceneCamera; 8 | 9 | public class CutsceneExitMessageHandler implements MessageHandler { 10 | @Override 11 | public void handle(CutsceneExitInboundMessage message) { 12 | Player.cutsceneActive = false; 13 | for(int cameraType = 0; cameraType < 5; cameraType++) 14 | SceneCamera.customCameraActive[cameraType] = false; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/chat/ForcedPrivateMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.chat; 2 | 3 | import org.runejs.client.frame.ChatBox; 4 | import org.runejs.client.media.renderable.actor.Player; 5 | import org.runejs.client.message.handler.MessageHandler; 6 | import org.runejs.client.message.inbound.chat.ForcedPrivateMessageInboundMessage; 7 | 8 | /** 9 | * A {@link MessageHandler} that handles {@link ForcedPrivateMessageInboundMessage}s. 10 | */ 11 | public class ForcedPrivateMessageHandler implements MessageHandler { 12 | @Override 13 | public void handle(ForcedPrivateMessageInboundMessage message) { 14 | ChatBox.addChatMessage(Player.longToUsername(message.username).method85().toString(), message.message, 6); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/chat/SetChatModesMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.chat; 2 | 3 | import org.runejs.client.MovedStatics; 4 | import org.runejs.client.frame.ChatBox; 5 | import org.runejs.client.message.handler.MessageHandler; 6 | import org.runejs.client.message.inbound.chat.SetChatModesInboundMessage; 7 | 8 | /** 9 | * A {@link MessageHandler} that handles {@link SetChatModesInboundMessage}s. 10 | */ 11 | public class SetChatModesMessageHandler implements MessageHandler { 12 | @Override 13 | public void handle(SetChatModesInboundMessage message) { 14 | ChatBox.publicChatMode = message.publicChatMode; 15 | ChatBox.privateChatMode = message.privateChatMode; 16 | ChatBox.tradeMode = message.tradeMode; 17 | 18 | // TODO (jkm) investigate this and see why there are two 19 | ChatBox.redrawChatbox = true; 20 | MovedStatics.redrawChatbox = true; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/chat/SetFriendsListStatusMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.chat; 2 | 3 | import org.runejs.client.cache.media.gameInterface.GameInterface; 4 | import org.runejs.client.media.renderable.actor.Player; 5 | import org.runejs.client.message.handler.MessageHandler; 6 | import org.runejs.client.message.inbound.chat.SetFriendsListStatusInboundMessage; 7 | 8 | /** 9 | * A {@link MessageHandler} that handles {@link SetFriendsListStatusInboundMessage}s. 10 | */ 11 | public class SetFriendsListStatusMessageHandler implements MessageHandler { 12 | @Override 13 | public void handle(SetFriendsListStatusInboundMessage message) { 14 | Player.friendListStatus = message.friendListStatus; 15 | GameInterface.redrawTabArea = true; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/chat/UpdateIgnoreListMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.chat; 2 | 3 | import org.runejs.client.Game; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.chat.UpdateIgnoreListInboundMessage; 6 | 7 | public class UpdateIgnoreListMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(UpdateIgnoreListInboundMessage message) { 10 | Game.ignoreList.setPlayers(message.ignores); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/console/ReceiveConsoleCommandMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.console; 2 | 3 | import org.runejs.client.frame.console.Console; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.console.ReceiveConsoleCommandMessage; 6 | 7 | /** 8 | * Adds a console command, e.g. for autocomplete. 9 | */ 10 | public class ReceiveConsoleCommandMessageHandler implements MessageHandler { 11 | @Override 12 | public void handle(ReceiveConsoleCommandMessage message) { 13 | Console.console.addCommand(message.command, message.help); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/console/ReceiveConsoleLogMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.console; 2 | 3 | import org.runejs.client.frame.console.Console; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.console.ReceiveConsoleLogMessage; 6 | 7 | /** 8 | * Adds a log message to the console. 9 | */ 10 | public class ReceiveConsoleLogMessageHandler implements MessageHandler { 11 | @Override 12 | public void handle(ReceiveConsoleLogMessage message) { 13 | Console.console.log("" + message.message.toString() + ""); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/misc/FlashTabIconMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.misc; 2 | 3 | import org.runejs.client.Game; 4 | import org.runejs.client.cache.media.gameInterface.GameInterface; 5 | import org.runejs.client.message.handler.MessageHandler; 6 | import org.runejs.client.message.inbound.misc.FlashTabIconInboundMessage; 7 | 8 | public class FlashTabIconMessageHandler implements MessageHandler { 9 | @Override 10 | public void handle(FlashTabIconInboundMessage message) { 11 | Game.flashingTabId = message.tabId; 12 | if(Game.currentTabId == Game.flashingTabId) { 13 | if(Game.flashingTabId != 3) 14 | Game.currentTabId = 3; 15 | else 16 | Game.currentTabId = 1; 17 | GameInterface.redrawTabArea = true; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/misc/LogoutMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.misc; 2 | 3 | import org.runejs.client.Game; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.misc.LogoutMessage; 6 | 7 | /** 8 | * A {@link MessageHandler} that handles {@link LogoutMessage}s. 9 | */ 10 | public class LogoutMessageHandler implements MessageHandler { 11 | @Override 12 | public void handle(LogoutMessage message) { 13 | Game.logout(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/misc/SetCurrentTabMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.misc; 2 | 3 | import org.runejs.client.Game; 4 | import org.runejs.client.cache.media.gameInterface.GameInterface; 5 | import org.runejs.client.message.handler.MessageHandler; 6 | import org.runejs.client.message.inbound.misc.SetCurrentTabInboundMessage; 7 | 8 | public class SetCurrentTabMessageHandler implements MessageHandler { 9 | @Override 10 | public void handle(SetCurrentTabInboundMessage message) { 11 | Game.currentTabId = message.tabId; 12 | GameInterface.drawTabIcons = true; 13 | GameInterface.redrawTabArea = true; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/misc/SetMinimapStateMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.misc; 2 | 3 | import org.runejs.client.frame.Minimap; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.misc.SetMinimapStateInboundMessage; 6 | 7 | public class SetMinimapStateMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(SetMinimapStateInboundMessage message) { 10 | Minimap.minimapState = message.state; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/misc/SetMultiCombatStateMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.misc; 2 | 3 | import org.runejs.client.MovedStatics; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.misc.SetMultiCombatStateInboundMessage; 6 | 7 | public class SetMultiCombatStateMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(SetMultiCombatStateInboundMessage message) { 10 | MovedStatics.multiCombatState = message.state; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/misc/SetSystemUpdateTimeMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.misc; 2 | 3 | import org.runejs.client.MovedStatics; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.misc.SetSystemUpdateTimeInboundMessage; 6 | 7 | public class SetSystemUpdateTimeMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(SetSystemUpdateTimeInboundMessage message) { 10 | MovedStatics.systemUpdateTime = message.time; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/misc/UpdateCarryWeightMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.misc; 2 | 3 | import org.runejs.client.Game; 4 | import org.runejs.client.MovedStatics; 5 | import org.runejs.client.cache.media.gameInterface.GameInterface; 6 | import org.runejs.client.message.handler.MessageHandler; 7 | import org.runejs.client.message.inbound.misc.UpdateCarryWeightMessage; 8 | 9 | /** 10 | * A {@link MessageHandler} that handles {@link UpdateCarryWeightMessage}s. 11 | */ 12 | public class UpdateCarryWeightMessageHandler implements MessageHandler { 13 | @Override 14 | public void handle(UpdateCarryWeightMessage message) { 15 | if(Game.currentTabId == 12) 16 | GameInterface.redrawTabArea = true; 17 | MovedStatics.runWeight = message.amount; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/misc/UpdatePlayerOptionsMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.misc; 2 | 3 | import org.runejs.client.media.renderable.actor.Player; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.misc.UpdatePlayerOptionsInboundMessage; 6 | 7 | public class UpdatePlayerOptionsMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(UpdatePlayerOptionsInboundMessage message) { 10 | if(message.index >= 1 && message.index <= 5) { 11 | String option = message.option; 12 | if(option.equalsIgnoreCase("null")) 13 | option = null; 14 | Player.playerActions[message.index - 1] = option; 15 | Player.playerActionsLowPriority[message.index - 1] = message.lowPriority; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/misc/UpdateRunEnergyMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.misc; 2 | 3 | import org.runejs.client.ClientScriptRunner; 4 | import org.runejs.client.Game; 5 | import org.runejs.client.cache.media.gameInterface.GameInterface; 6 | import org.runejs.client.message.handler.MessageHandler; 7 | import org.runejs.client.message.inbound.misc.UpdateRunEnergyMessage; 8 | 9 | /** 10 | * A {@link MessageHandler} that handles {@link UpdateRunEnergyMessage}s. 11 | */ 12 | public class UpdateRunEnergyMessageHandler implements MessageHandler { 13 | @Override 14 | public void handle(UpdateRunEnergyMessage message) { 15 | if(Game.currentTabId == 12) 16 | GameInterface.redrawTabArea = true; 17 | ClientScriptRunner.runEnergy = message.amount; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/region/UpdateReferencePositionMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.region; 2 | 3 | import org.runejs.client.MovedStatics; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.region.UpdateReferencePositionInboundMessage; 6 | 7 | /** 8 | * Updates the reference position of the client. 9 | */ 10 | public class UpdateReferencePositionMessageHandler implements MessageHandler { 11 | @Override 12 | public void handle(UpdateReferencePositionInboundMessage message) { 13 | MovedStatics.placementX = message.x; 14 | MovedStatics.placementY = message.y; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/updating/ClearLocalPlayerDestinationMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.updating; 2 | 3 | import org.runejs.client.MovedStatics; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.updating.ClearLocalPlayerDestinationInboundMessage; 6 | 7 | public class ClearLocalPlayerDestinationMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(ClearLocalPlayerDestinationInboundMessage message) { 10 | MovedStatics.destinationX = 0; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/updating/SetLocalPlayerPositionMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.updating; 2 | 3 | import org.runejs.client.media.renderable.actor.Player; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.updating.SetLocalPlayerPositionInboundMessage; 6 | 7 | public class SetLocalPlayerPositionMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(SetLocalPlayerPositionInboundMessage message) { 10 | Player.worldLevel = message.level; 11 | Player.localPlayer.method787(message.x, message.shouldTeleport, message.y); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/widget/SetWidgetPositionMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.widget; 2 | 3 | import org.runejs.client.cache.media.gameInterface.GameInterface; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.widget.SetWidgetPositionInboundMessage; 6 | 7 | public class SetWidgetPositionMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(SetWidgetPositionInboundMessage message) { 10 | GameInterface gameInterface = GameInterface.getInterface((message.widgetId << 16) | message.childId); 11 | 12 | gameInterface.x = gameInterface.baseX + message.x; 13 | gameInterface.y = gameInterface.baseY + message.y; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/widget/model/RotateWidgetModelMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.widget.model; 2 | 3 | import org.runejs.client.cache.media.gameInterface.GameInterface; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.widget.model.RotateWidgetModelInboundMessage; 6 | 7 | public class RotateWidgetModelMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(RotateWidgetModelInboundMessage message) { 10 | GameInterface gameInterface = GameInterface.getInterface((message.widgetId << 16) | message.childId); 11 | 12 | gameInterface.modelYAngle = message.rotationZ; 13 | gameInterface.modelZoom = message.zoom; 14 | gameInterface.modelXAngle = message.rotationX; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/widget/model/SetWidgetModelMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.widget.model; 2 | 3 | import org.runejs.client.cache.media.gameInterface.GameInterface; 4 | import org.runejs.client.cache.media.gameInterface.InterfaceModelType; 5 | import org.runejs.client.message.handler.MessageHandler; 6 | import org.runejs.client.message.inbound.widget.model.SetWidgetModelInboundMessage; 7 | 8 | public class SetWidgetModelMessageHandler implements MessageHandler { 9 | @Override 10 | public void handle(SetWidgetModelInboundMessage message) { 11 | GameInterface gameInterface = GameInterface.getInterface((message.widgetId << 16) | message.childId); 12 | gameInterface.modelId = message.modelId; 13 | gameInterface.modelType = InterfaceModelType.MODEL; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/widget/model/SetWidgetModelRotationSpeedMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.widget.model; 2 | 3 | import org.runejs.client.cache.media.gameInterface.GameInterface; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.widget.model.SetWidgetModelRotationSpeedInboundMessage; 6 | 7 | public class SetWidgetModelRotationSpeedMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(SetWidgetModelRotationSpeedInboundMessage message) { 10 | GameInterface gameInterface = GameInterface.getInterface((message.widgetId << 16) | message.childId); 11 | 12 | gameInterface.rotationSpeed = message.speed; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/widget/model/SetWidgetNPCChatheadModelMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.widget.model; 2 | 3 | import org.runejs.client.cache.media.gameInterface.GameInterface; 4 | import org.runejs.client.cache.media.gameInterface.InterfaceModelType; 5 | import org.runejs.client.message.handler.MessageHandler; 6 | import org.runejs.client.message.inbound.widget.model.SetWidgetNPCChatheadModelInboundMessage; 7 | 8 | public class SetWidgetNPCChatheadModelMessageHandler implements MessageHandler { 9 | @Override 10 | public void handle(SetWidgetNPCChatheadModelInboundMessage message) { 11 | GameInterface gameInterface = GameInterface.getInterface((message.widgetId << 16) | message.childId); 12 | 13 | gameInterface.modelType = InterfaceModelType.NPC_CHATHEAD; 14 | gameInterface.modelId = message.npcId; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/widget/text/SetWidgetTextColorMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.widget.text; 2 | 3 | import org.runejs.client.cache.media.gameInterface.GameInterface; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.widget.text.SetWidgetTextColorInboundMessage; 6 | 7 | public class SetWidgetTextColorMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(SetWidgetTextColorInboundMessage message) { 10 | GameInterface gameInterface = GameInterface.getInterface((message.widgetId << 16) | message.childId); 11 | 12 | int i_115_ = message.color >> 10 & 0x1f; 13 | int i_116_ = 0x1f & message.color >> 5; 14 | int i_117_ = message.color & 0x1f; 15 | gameInterface.textColor = (i_116_ << 11) + (i_115_ << 19) + (i_117_ << 3); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/widget/text/SetWidgetTextMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.widget.text; 2 | 3 | import org.runejs.client.Game; 4 | import org.runejs.client.cache.media.gameInterface.GameInterface; 5 | import org.runejs.client.message.handler.MessageHandler; 6 | import org.runejs.client.message.inbound.widget.text.SetWidgetTextInboundMessage; 7 | 8 | public class SetWidgetTextMessageHandler implements MessageHandler { 9 | @Override 10 | public void handle(SetWidgetTextInboundMessage message) { 11 | GameInterface gameInterface = GameInterface.getInterface((message.widgetId << 16) | message.childId); 12 | gameInterface.text = message.text; 13 | if(Game.tabWidgetIds[Game.currentTabId] == message.widgetId) { 14 | GameInterface.redrawTabArea = true; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/widget/visibility/SetReportAbuseWidgetMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.widget.visibility; 2 | 3 | import org.runejs.client.cache.media.gameInterface.GameInterface; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.widget.visibility.SetReportAbuseWidgetInboundMessage; 6 | 7 | public class SetReportAbuseWidgetMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(SetReportAbuseWidgetInboundMessage message) { 10 | GameInterface.reportAbuseWidgetId = message.widgetId; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/handler/rs435/widget/visibility/SetWidgetHiddenMessageHandler.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.handler.rs435.widget.visibility; 2 | 3 | import org.runejs.client.cache.media.gameInterface.GameInterface; 4 | import org.runejs.client.message.handler.MessageHandler; 5 | import org.runejs.client.message.inbound.widget.visibility.SetWidgetHiddenInboundMessage; 6 | 7 | public class SetWidgetHiddenMessageHandler implements MessageHandler { 8 | @Override 9 | public void handle(SetWidgetHiddenInboundMessage message) { 10 | GameInterface gameInterface = GameInterface.getInterface((message.widgetId << 16) | message.childId); 11 | 12 | gameInterface.hide = message.isHidden; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/BulkInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message sent containing a group of messages in one. 7 | */ 8 | public class BulkInboundMessage implements InboundMessage { 9 | /** 10 | * New X reference position. 11 | */ 12 | public final int x; 13 | 14 | /** 15 | * New Y reference position. 16 | */ 17 | public final int y; 18 | 19 | /** 20 | * Child messages to be handled. 21 | */ 22 | public final InboundMessage[] messages; 23 | 24 | public BulkInboundMessage(int x, int y, InboundMessage[] messages) { 25 | this.x = x; 26 | this.y = y; 27 | this.messages = messages; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/audio/PlayQuickSongInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.audio; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message sent from the client to the server to play a song 7 | */ 8 | public class PlayQuickSongInboundMessage implements InboundMessage { 9 | /** 10 | * The song id to play 11 | */ 12 | public final int songId; 13 | 14 | /** 15 | * The song timeout. 16 | */ 17 | public final int songTimeout; 18 | 19 | /** 20 | * Creates a new PlaySongInboundMessage 21 | */ 22 | public PlayQuickSongInboundMessage(int songId, int songTimeout) { 23 | this.songId = songId; 24 | this.songTimeout = songTimeout; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/audio/PlaySongInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.audio; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message sent from the client to the server to play a song 7 | */ 8 | public class PlaySongInboundMessage implements InboundMessage { 9 | /** 10 | * The song id to play 11 | */ 12 | public final int songId; 13 | 14 | /** 15 | * Creates a new PlaySongInboundMessage 16 | */ 17 | public PlaySongInboundMessage(int songId) { 18 | this.songId = songId; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/audio/PlaySoundInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.audio; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message sent from the client to the server to play a sound effect 7 | */ 8 | public class PlaySoundInboundMessage implements InboundMessage { 9 | /** 10 | * The sound id to play 11 | */ 12 | public final int soundId; 13 | 14 | /** 15 | * The volume to play the sound at 16 | */ 17 | public final int volume; 18 | 19 | /** 20 | * The delay to play the sound at 21 | */ 22 | public final int delay; 23 | 24 | /** 25 | * Creates a new PlaySoundInboundMessage 26 | */ 27 | public PlaySoundInboundMessage(int soundId, int volume, int delay) { 28 | this.soundId = soundId; 29 | this.volume = volume; 30 | this.delay = delay; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/camera/CutsceneCameraLookToInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.camera; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Switch to cutscene camera mode, and rotate the camera towards a position. 7 | */ 8 | public class CutsceneCameraLookToInboundMessage implements InboundMessage { 9 | public final int targetX; 10 | 11 | public final int targetY; 12 | 13 | public final int height; 14 | 15 | public final int speedBase; 16 | 17 | public final int speedScale; 18 | 19 | public CutsceneCameraLookToInboundMessage(int targetX, int targetY, int height, int speedBase, int speedScale) { 20 | this.targetX = targetX; 21 | this.targetY = targetY; 22 | this.height = height; 23 | this.speedBase = speedBase; 24 | this.speedScale = speedScale; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/camera/CutsceneCameraMoveToInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.camera; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Switch to cutscene camera mode, and move the camera to a position. 7 | */ 8 | public class CutsceneCameraMoveToInboundMessage implements InboundMessage { 9 | public final int targetX; 10 | 11 | public final int targetY; 12 | 13 | public final int height; 14 | 15 | public final int speedBase; 16 | 17 | public final int speedScale; 18 | 19 | public CutsceneCameraMoveToInboundMessage(int targetX, int targetY, int height, int speedBase, int speedScale) { 20 | this.targetX = targetX; 21 | this.targetY = targetY; 22 | this.height = height; 23 | this.speedBase = speedBase; 24 | this.speedScale = speedScale; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/camera/CutsceneExitInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.camera; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Exits the cutscene camera. 7 | * 8 | * This message has no properties. 9 | */ 10 | public class CutsceneExitInboundMessage implements InboundMessage { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/camera/ShakeCameraInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.camera; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class ShakeCameraInboundMessage implements InboundMessage { 6 | public final int cameraType; 7 | public final int jitter; 8 | public final int amplitude; 9 | public final int frequency; 10 | 11 | public ShakeCameraInboundMessage(int cameraType, int jitter, int amplitude, int frequency) { 12 | this.cameraType = cameraType; 13 | this.jitter = jitter; 14 | this.amplitude = amplitude; 15 | this.frequency = frequency; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/chat/ReceiveChatboxMessageInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.chat; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message sent from the server to the client to indicate that a general chatbox message has been received. 7 | * 8 | * This is used for the following messages: 9 | * - General chat messages 10 | * - Trade requests 11 | * - Duel requests 12 | */ 13 | public class ReceiveChatboxMessageInboundMessage implements InboundMessage { 14 | /** 15 | * The message 16 | */ 17 | public final String message; 18 | 19 | /** 20 | * Constructs a new private message inbound message. 21 | * 22 | * @param message The imessage. 23 | */ 24 | public ReceiveChatboxMessageInboundMessage(String message) { 25 | this.message = message; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/chat/SetFriendsListStatusInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.chat; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message sent from the server to the client to update the status 7 | * of the connection to the friends server. 8 | */ 9 | public class SetFriendsListStatusInboundMessage implements InboundMessage { 10 | /** 11 | * The status of the connection to the friends server. 12 | */ 13 | public final int friendListStatus; 14 | 15 | /** 16 | * Constructs a new SetFriendsListStatusInboundMessage 17 | * 18 | * @param friendListStatus The status of the connection to the friends server. 19 | */ 20 | public SetFriendsListStatusInboundMessage(int friendListStatus) { 21 | this.friendListStatus = friendListStatus; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/chat/UpdateIgnoreListInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.chat; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message sent from the server to the client to update the local player's ignore list. 7 | */ 8 | public class UpdateIgnoreListInboundMessage implements InboundMessage { 9 | public final long[] ignores; 10 | 11 | public UpdateIgnoreListInboundMessage(long[] ignores) { 12 | this.ignores = ignores; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/config/ResetVarbitsInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.config; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message telling the client to reset all its varbits. 7 | * 8 | * This message has no properties. 9 | */ 10 | public class ResetVarbitsInboundMessage implements InboundMessage { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/config/ResetVarpsInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.config; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message telling the client to reset all its varps. 7 | * 8 | * This message has no properties. 9 | */ 10 | public class ResetVarpsInboundMessage implements InboundMessage { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/config/SetVarpValueInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.config; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Sets a varp to a given value. 7 | * 8 | * Note that this message relates to two packets: one with the value 9 | * as a byte, and one with the value as an int. 10 | */ 11 | public class SetVarpValueInboundMessage implements InboundMessage { 12 | public final int index; 13 | 14 | public final int value; 15 | 16 | public SetVarpValueInboundMessage(int index, int value) { 17 | this.index = index; 18 | this.value = value; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/console/ReceiveConsoleCommandMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.console; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message sent from the server to the client to add a command to the console. 7 | */ 8 | public class ReceiveConsoleCommandMessage implements InboundMessage { 9 | /** 10 | * The command to add. 11 | */ 12 | public final String command; 13 | 14 | /** 15 | * The help text for the command. 16 | */ 17 | public final String help; 18 | 19 | /** 20 | * Constructs a new {@link ReceiveConsoleCommandMessage}. 21 | * @param command The command to add. 22 | * @param help The help text for the command. 23 | */ 24 | public ReceiveConsoleCommandMessage(String command, String help) { 25 | this.command = command; 26 | this.help = help; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/console/ReceiveConsoleLogMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.console; 2 | 3 | import org.runejs.client.RSString; 4 | import org.runejs.client.message.InboundMessage; 5 | 6 | /** 7 | * A message sent from the server to the client to add a log message to the console. 8 | */ 9 | public class ReceiveConsoleLogMessage implements InboundMessage { 10 | /** 11 | * The message. 12 | */ 13 | public final RSString message; 14 | 15 | /** 16 | * Constructs a new {@link ReceiveConsoleLogMessage}. 17 | * @param message The message. 18 | */ 19 | public ReceiveConsoleLogMessage(RSString message) { 20 | this.message = message; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/misc/FlashTabIconInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.misc; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Flashes the tab icon of the specified tab. 7 | */ 8 | public class FlashTabIconInboundMessage implements InboundMessage { 9 | public final int tabId; 10 | 11 | public FlashTabIconInboundMessage(int tabId) { 12 | this.tabId = tabId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/misc/LogoutMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.misc; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message sent from the server to the client to indicate that the local player has logged out. 7 | */ 8 | public class LogoutMessage implements InboundMessage { 9 | /** 10 | * Constructs a new {@link LogoutMessage}. 11 | */ 12 | public LogoutMessage() { 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/misc/SetCurrentTabInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.misc; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class SetCurrentTabInboundMessage implements InboundMessage { 6 | /** 7 | * The new tab id; 8 | */ 9 | public final int tabId; 10 | 11 | public SetCurrentTabInboundMessage(int tabId) { 12 | this.tabId = tabId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/misc/SetMinimapStateInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.misc; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class SetMinimapStateInboundMessage implements InboundMessage { 6 | /** 7 | * The new minimap state. 8 | * 9 | * TODO (James) make an enum for this 10 | */ 11 | public final int state; 12 | 13 | public SetMinimapStateInboundMessage(int state) { 14 | this.state = state; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/misc/SetMultiCombatStateInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.misc; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class SetMultiCombatStateInboundMessage implements InboundMessage { 6 | /** 7 | * The new multi combat state. 8 | * 9 | * TODO (James) make an enum for this 10 | */ 11 | public final int state; 12 | 13 | public SetMultiCombatStateInboundMessage(int state) { 14 | this.state = state; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/misc/SetSystemUpdateTimeInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.misc; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class SetSystemUpdateTimeInboundMessage implements InboundMessage { 6 | /** 7 | * The time until the system update occurs. 8 | */ 9 | public final int time; 10 | 11 | public SetSystemUpdateTimeInboundMessage(int time) { 12 | this.time = time; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/misc/UpdateCarryWeightMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.misc; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message sent to update the client's current carry weight. 7 | */ 8 | public class UpdateCarryWeightMessage implements InboundMessage { 9 | /** 10 | * The amount of weight carried. 11 | */ 12 | public final int amount; 13 | 14 | /** 15 | * Constructs a new {@link UpdateCarryWeightMessage}. 16 | * 17 | * @param amount The new carried weight. 18 | */ 19 | public UpdateCarryWeightMessage(int amount) { 20 | this.amount = amount; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/misc/UpdatePlayerOptionsInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.misc; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class UpdatePlayerOptionsInboundMessage implements InboundMessage { 6 | /** 7 | * The option to update. 8 | */ 9 | public final int index; 10 | 11 | /** 12 | * The text of the option. 13 | */ 14 | public final String option; 15 | 16 | /** 17 | * Used to push options to the bottom. 18 | */ 19 | public final boolean lowPriority; 20 | 21 | public UpdatePlayerOptionsInboundMessage(int index, String option, boolean lowPriority) { 22 | this.index = index; 23 | this.option = option; 24 | this.lowPriority = lowPriority; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/misc/UpdateRunEnergyMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.misc; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * A message sent to update the client's run energy amount. 7 | */ 8 | public class UpdateRunEnergyMessage implements InboundMessage { 9 | /** 10 | * The amount of run energy. 11 | */ 12 | public final int amount; 13 | 14 | /** 15 | * Constructs a new {@link UpdateRunEnergyMessage}. 16 | * 17 | * @param amount The new run energy amount. 18 | */ 19 | public UpdateRunEnergyMessage(int amount) { 20 | this.amount = amount; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/region/ClearChunkInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.region; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * An {@link InboundMessage} sent to clear a chunk. 7 | */ 8 | public class ClearChunkInboundMessage implements InboundMessage { 9 | /** 10 | * The chunk x offset. 11 | */ 12 | public final int x; 13 | 14 | /** 15 | * The chunk y offset. 16 | */ 17 | public final int y; 18 | 19 | /** 20 | * Creates a new {@link ClearChunkInboundMessage}. 21 | * @param x The chunk x offset. 22 | * @param y The chunk y offset. 23 | */ 24 | public ClearChunkInboundMessage(int x, int y) { 25 | this.x = x; 26 | this.y = y; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/region/UpdateReferencePositionInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.region; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * An {@link InboundMessage} sent to update the reference position of the client. 7 | */ 8 | public class UpdateReferencePositionInboundMessage implements InboundMessage { 9 | /** 10 | * The new x coordinate of the reference position. 11 | */ 12 | public final int x; 13 | 14 | /** 15 | * The new y coordinate of the reference position. 16 | */ 17 | public final int y; 18 | 19 | /** 20 | * Creates a new {@link UpdateReferencePositionInboundMessage}. 21 | * @param x The new x coordinate of the reference position. 22 | * @param y The new y coordinate of the reference position. 23 | */ 24 | public UpdateReferencePositionInboundMessage(int x, int y) { 25 | this.x = x; 26 | this.y = y; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/updating/ClearLocalPlayerDestinationInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.updating; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Clear the local player's walking destination (i.e. the flag on the minimap) 7 | * 8 | * This message has no properties. 9 | */ 10 | public class ClearLocalPlayerDestinationInboundMessage implements InboundMessage { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/updating/ResetAllActorAnimationsInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.updating; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Resets all actor animations. 7 | * 8 | * This message has no properties. 9 | */ 10 | public class ResetAllActorAnimationsInboundMessage implements InboundMessage { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/updating/registration/ActorGroupRegistrationUpdate.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.updating.registration; 2 | 3 | /** 4 | * The update message containing details about a group of new actors that should be registered. 5 | */ 6 | public class ActorGroupRegistrationUpdate { 7 | 8 | /** 9 | * The list of new actors that should be registered. 10 | */ 11 | public final TActorRegistration[] players; 12 | 13 | public ActorGroupRegistrationUpdate(TActorRegistration[] players) { 14 | this.players = players; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/updating/registration/NPCRegistration.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.updating.registration; 2 | 3 | /** 4 | * Registration details for a single NPC. 5 | */ 6 | public class NPCRegistration extends ActorRegistration { 7 | /** 8 | * The definition id of the NPC. 9 | * 10 | * e.g. the index of the NPC in the cache. 11 | */ 12 | public final int definitionId; 13 | 14 | public NPCRegistration(int index, int offsetX, int offsetY, int faceDirection, boolean updateRequired, boolean discardWalkingQueue, int definitionId) { 15 | super(index, offsetX, offsetY, faceDirection, updateRequired, discardWalkingQueue); 16 | this.definitionId = definitionId; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/SetWidgetPositionInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class SetWidgetPositionInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | 10 | public final int x; 11 | 12 | public final int y; 13 | 14 | public SetWidgetPositionInboundMessage(int widgetId, int childId, int x, int y) { 15 | this.widgetId = widgetId; 16 | this.childId = childId; 17 | this.x = x; 18 | this.y = y; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/SetWidgetScrollPositionInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class SetWidgetScrollPositionInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | 10 | public final int scrollPosition; 11 | 12 | public SetWidgetScrollPositionInboundMessage(int widgetId, int childId, int scrollPosition) { 13 | this.widgetId = widgetId; 14 | this.childId = childId; 15 | this.scrollPosition = scrollPosition; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/container/ClearWidgetItemsInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.container; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class ClearWidgetItemsInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | 10 | public ClearWidgetItemsInboundMessage(int widgetId, int childId) { 11 | this.widgetId = widgetId; 12 | this.childId = childId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/container/UpdateAllWidgetItemsInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.container; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class UpdateAllWidgetItemsInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | 10 | public final WidgetItem[] items; 11 | 12 | public UpdateAllWidgetItemsInboundMessage(int widgetId, int childId, WidgetItem[] items) { 13 | this.widgetId = widgetId; 14 | this.childId = childId; 15 | this.items = items; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/container/UpdateSpecificWidgetItemsInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.container; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class UpdateSpecificWidgetItemsInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | public final WidgetItem[] items; 10 | 11 | public UpdateSpecificWidgetItemsInboundMessage(int widgetId, int childId, WidgetItem[] items) { 12 | this.widgetId = widgetId; 13 | this.childId = childId; 14 | this.items = items; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/container/WidgetItem.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.container; 2 | 3 | /** 4 | * Represents an item on a widget. 5 | */ 6 | public class WidgetItem { 7 | /** 8 | * The slot on the widget that the item is in. 9 | */ 10 | public final int index; 11 | public final int id; 12 | public final int amount; 13 | 14 | public WidgetItem(int index, int id, int amount) { 15 | this.index = index; 16 | this.id = id; 17 | this.amount = amount; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/input/ShowNumberInputWidgetInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.input; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Shows the "Enter amount:" input. 7 | * 8 | * This message has no properties. 9 | */ 10 | public class ShowNumberInputWidgetInboundMessage implements InboundMessage { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/input/ShowTextInputWidgetInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.input; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Shows the "Enter name:" input. 7 | * 8 | * This message has no properties. 9 | */ 10 | public class ShowTextInputWidgetInboundMessage implements InboundMessage { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/model/AnimateWidgetModelInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.model; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class AnimateWidgetModelInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | 10 | public final int animationId; 11 | 12 | public AnimateWidgetModelInboundMessage(int widgetId, int childId, int animationId) { 13 | this.widgetId = widgetId; 14 | this.childId = childId; 15 | this.animationId = animationId; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/model/RotateWidgetModelInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.model; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class RotateWidgetModelInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | 10 | public final int rotationX; 11 | 12 | public final int rotationZ; 13 | 14 | public final int zoom; 15 | 16 | public RotateWidgetModelInboundMessage(int widgetId, int childId, int rotationX, int rotationZ, int zoom) { 17 | this.widgetId = widgetId; 18 | this.childId = childId; 19 | this.rotationX = rotationX; 20 | this.rotationZ = rotationZ; 21 | this.zoom = zoom; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/model/SetWidgetItemModelInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.model; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class SetWidgetItemModelInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | 10 | public final int itemId; 11 | 12 | public final int itemZoom; 13 | 14 | public SetWidgetItemModelInboundMessage(int widgetId, int childId, int itemId, int itemZoom) { 15 | this.widgetId = widgetId; 16 | this.childId = childId; 17 | this.itemId = itemId; 18 | this.itemZoom = itemZoom; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/model/SetWidgetLocalPlayerChatheadModelInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.model; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class SetWidgetLocalPlayerChatheadModelInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | 10 | public SetWidgetLocalPlayerChatheadModelInboundMessage(int widgetId, int childId) { 11 | this.widgetId = widgetId; 12 | this.childId = childId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/model/SetWidgetModelInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.model; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class SetWidgetModelInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | 10 | public final int modelId; 11 | 12 | public SetWidgetModelInboundMessage(int widgetId, int childId, int modelId) { 13 | this.widgetId = widgetId; 14 | this.childId = childId; 15 | this.modelId = modelId; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/model/SetWidgetModelRotationSpeedInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.model; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * An {@link InboundMessage} sent to apply a constant rotational speed to a widget model. 7 | */ 8 | public class SetWidgetModelRotationSpeedInboundMessage implements InboundMessage { 9 | public final int widgetId; 10 | 11 | public final int childId; 12 | 13 | public final int speed; 14 | 15 | public SetWidgetModelRotationSpeedInboundMessage(int widgetId, int childId, int speed) { 16 | this.widgetId = widgetId; 17 | this.childId = childId; 18 | this.speed = speed; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/model/SetWidgetNPCChatheadModelInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.model; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class SetWidgetNPCChatheadModelInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | 10 | public final int npcId; 11 | 12 | public SetWidgetNPCChatheadModelInboundMessage(int widgetId, int childId, int npcId) { 13 | this.widgetId = widgetId; 14 | this.childId = childId; 15 | this.npcId = npcId; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/text/SetWidgetTextColorInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.text; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class SetWidgetTextColorInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | 10 | public final int color; 11 | 12 | public SetWidgetTextColorInboundMessage(int widgetId, int childId, int color) { 13 | this.widgetId = widgetId; 14 | this.childId = childId; 15 | this.color = color; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/text/SetWidgetTextInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.text; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class SetWidgetTextInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public final int childId; 9 | 10 | public final String text; 11 | 12 | public SetWidgetTextInboundMessage(int widgetId, int childId, String text) { 13 | this.widgetId = widgetId; 14 | this.childId = childId; 15 | this.text = text; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/visibility/CloseAllWidgetsInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.visibility; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * An {@link InboundMessage} sent to close all open widgets. 7 | * 8 | * This message has no properties. 9 | */ 10 | public class CloseAllWidgetsInboundMessage implements InboundMessage { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/visibility/ReplaceTabWidgetInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.visibility; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Sets the widget to be displayed when a user opens a given tab. 7 | * 8 | * Note that this doesn't replace the entire tab area but rather it permanently sets 9 | * the contents of a given tab. 10 | * 11 | * If you want to overlay the tabarea with a widget, see {@link ShowTabWidgetInboundMessage} 12 | */ 13 | public class ReplaceTabWidgetInboundMessage implements InboundMessage { 14 | /** 15 | * The widget to display 16 | */ 17 | public final int widgetId; 18 | 19 | /** 20 | * The tab to display the widget on 21 | */ 22 | public final int tabIndex; 23 | 24 | public ReplaceTabWidgetInboundMessage(int widgetId, int tabIndex) { 25 | this.widgetId = widgetId; 26 | this.tabIndex = tabIndex; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/visibility/SetReportAbuseWidgetInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.visibility; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Sets the widget which should be opened after clicking the "Report Abuse" button. 7 | */ 8 | public class SetReportAbuseWidgetInboundMessage implements InboundMessage { 9 | public final int widgetId; 10 | 11 | public SetReportAbuseWidgetInboundMessage(int widgetId) { 12 | this.widgetId = widgetId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/visibility/SetWidgetHiddenInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.visibility; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Sets an individual widget or child widget to hidden. 7 | * 8 | * TODO please add some use cases for this 9 | */ 10 | public class SetWidgetHiddenInboundMessage implements InboundMessage { 11 | public final int widgetId; 12 | 13 | public final int childId; 14 | public final boolean isHidden; 15 | 16 | public SetWidgetHiddenInboundMessage(int widgetId, int childId, boolean isHidden) { 17 | this.widgetId = widgetId; 18 | this.childId = childId; 19 | this.isHidden = isHidden; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/visibility/ShowChatboxWidgetInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.visibility; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Display a widget in the chatbox. 7 | */ 8 | public class ShowChatboxWidgetInboundMessage implements InboundMessage { 9 | public final int widgetId; 10 | 11 | public ShowChatboxWidgetInboundMessage(int widgetId) { 12 | this.widgetId = widgetId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/visibility/ShowFullScreenWidgetInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.visibility; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Show a widget in full screen mode. 7 | */ 8 | public class ShowFullScreenWidgetInboundMessage implements InboundMessage { 9 | 10 | public final int widgetId; 11 | 12 | public final int childId; 13 | 14 | public ShowFullScreenWidgetInboundMessage(int widgetId, int childId) { 15 | this.widgetId = widgetId; 16 | this.childId = childId; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/visibility/ShowPermanentChatboxWidgetInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.visibility; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class ShowPermanentChatboxWidgetInboundMessage implements InboundMessage { 6 | public final int widgetId; 7 | 8 | public ShowPermanentChatboxWidgetInboundMessage(int widgetId) { 9 | this.widgetId = widgetId; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/visibility/ShowScreenWidgetInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.visibility; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Display a widget in the game screen (3d window). 7 | */ 8 | public class ShowScreenWidgetInboundMessage implements InboundMessage { 9 | public final int widgetId; 10 | 11 | public ShowScreenWidgetInboundMessage(int widgetId) { 12 | this.widgetId = widgetId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/visibility/ShowTabAndScreenWidgetInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.visibility; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class ShowTabAndScreenWidgetInboundMessage implements InboundMessage { 6 | public final int screenWidgetId; 7 | 8 | public final int tabWidgetId; 9 | 10 | public ShowTabAndScreenWidgetInboundMessage(int screenWidgetId, int tabWidgetId) { 11 | this.screenWidgetId = screenWidgetId; 12 | this.tabWidgetId = tabWidgetId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/visibility/ShowTabWidgetInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.visibility; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Displays a widget over the tabarea. 7 | * 8 | * Note that this is used for temporary overlays, not for replacing the contents of a specific 9 | * tab. 10 | * 11 | * If you want to control a tab's contents, see {@link ReplaceTabWidgetInboundMessage} 12 | */ 13 | public class ShowTabWidgetInboundMessage implements InboundMessage { 14 | 15 | public final int widgetId; 16 | 17 | public ShowTabWidgetInboundMessage(int widgetId) { 18 | this.widgetId = widgetId; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/widget/visibility/ShowWalkableScreenWidgetInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.widget.visibility; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Show a walkable widget in the game (3d) screen. 7 | */ 8 | public class ShowWalkableScreenWidgetInboundMessage implements InboundMessage { 9 | public final int widgetId; 10 | 11 | public ShowWalkableScreenWidgetInboundMessage(int widgetId) { 12 | this.widgetId = widgetId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/world/CreateStationaryGFXInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.world; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | /** 6 | * Creates a stationary gfx in the world. 7 | */ 8 | public class CreateStationaryGFXInboundMessage implements InboundMessage { 9 | public final int id; 10 | public final int x; 11 | public final int y; 12 | public final int drawHeight; 13 | public final int delay; 14 | 15 | public CreateStationaryGFXInboundMessage(int id, int x, int y, int drawHeight, int delay) { 16 | this.id = id; 17 | this.x = x; 18 | this.y = y; 19 | this.drawHeight = drawHeight; 20 | this.delay = delay; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/world/PlaySoundAtPositionInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.world; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class PlaySoundAtPositionInboundMessage implements InboundMessage { 6 | public final int x; 7 | 8 | public final int y; 9 | 10 | public final int soundId; 11 | 12 | public final int radius; 13 | 14 | public final int volume; 15 | 16 | public final int delay; 17 | 18 | public PlaySoundAtPositionInboundMessage(int x, int y, int soundId, int radius, int volume, int delay) { 19 | this.x = x; 20 | this.y = y; 21 | this.soundId = soundId; 22 | this.radius = radius; 23 | this.volume = volume; 24 | this.delay = delay; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/world/item/AddGroundItemInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.world.item; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class AddGroundItemInboundMessage implements InboundMessage { 6 | public final int itemId; 7 | 8 | public final int amount; 9 | 10 | public final int x; 11 | 12 | public final int y; 13 | 14 | /** 15 | * The client will avoid spawning this item if excludePlayer matches the local player. 16 | * 17 | * Set to -1 if no player should be excluded. 18 | */ 19 | public final int excludePlayer; 20 | 21 | public AddGroundItemInboundMessage(int itemId, int amount, int x, int y, int excludePlayer) { 22 | this.itemId = itemId; 23 | this.amount = amount; 24 | this.x = x; 25 | this.y = y; 26 | this.excludePlayer = excludePlayer; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/world/item/RemoveGroundItemInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.world.item; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class RemoveGroundItemInboundMessage implements InboundMessage { 6 | public final int itemId; 7 | 8 | public final int x; 9 | 10 | public final int y; 11 | 12 | public RemoveGroundItemInboundMessage(int itemId, int x, int y) { 13 | this.itemId = itemId; 14 | this.x = x; 15 | this.y = y; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/world/item/UpdateGroundItemAmountInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.world.item; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class UpdateGroundItemAmountInboundMessage implements InboundMessage { 6 | public final int itemId; 7 | 8 | public final int x; 9 | 10 | public final int y; 11 | 12 | public final int existingAmount; 13 | 14 | public final int newAmount; 15 | 16 | public UpdateGroundItemAmountInboundMessage(int itemId, int x, int y, int existingAmount, int newAmount) { 17 | this.itemId = itemId; 18 | this.x = x; 19 | this.y = y; 20 | this.existingAmount = existingAmount; 21 | this.newAmount = newAmount; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/world/object/CreateObjectInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.world.object; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class CreateObjectInboundMessage implements InboundMessage { 6 | public final int x; 7 | 8 | public final int y; 9 | 10 | public final int id; 11 | 12 | public final int type; 13 | 14 | public final int orientation; 15 | 16 | public CreateObjectInboundMessage(int x, int y, int id, int type, int orientation) { 17 | this.x = x; 18 | this.y = y; 19 | this.id = id; 20 | this.type = type; 21 | this.orientation = orientation; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/world/object/RemoveObjectInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.world.object; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class RemoveObjectInboundMessage implements InboundMessage { 6 | public final int x; 7 | 8 | public final int y; 9 | 10 | public final int type; 11 | 12 | public final int orientation; 13 | 14 | public RemoveObjectInboundMessage(int x, int y, int type, int orientation) { 15 | this.x = x; 16 | this.y = y; 17 | this.type = type; 18 | this.orientation = orientation; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/inbound/world/object/RotateAnimateObjectInboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.inbound.world.object; 2 | 3 | import org.runejs.client.message.InboundMessage; 4 | 5 | public class RotateAnimateObjectInboundMessage implements InboundMessage { 6 | public final int x; 7 | 8 | public final int y; 9 | 10 | public final int type; 11 | 12 | /** 13 | * The new orientation to apply. 14 | */ 15 | public final int orientation; 16 | 17 | /** 18 | * The animation id. 19 | */ 20 | public final int animationId; 21 | 22 | public RotateAnimateObjectInboundMessage(int x, int y, int type, int orientation, int animationId) { 23 | this.x = x; 24 | this.y = y; 25 | this.type = type; 26 | this.orientation = orientation; 27 | this.animationId = animationId; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/chat/ChatCommandOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.chat; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * A message sent to the server when the player sends a command in the chatbox. 7 | */ 8 | public class ChatCommandOutboundMessage implements OutboundMessage { 9 | /** 10 | * The full text of the command, including any arguments 11 | */ 12 | public final String command; 13 | 14 | /** 15 | * Creates a new {@link ChatCommandOutboundMessage} 16 | * @param command The full text of the command, including any arguments 17 | */ 18 | public ChatCommandOutboundMessage(String command) { 19 | this.command = command; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/chat/SendPrivateMessageOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.chat; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * A message sent to the server when the player sends a private message. 7 | */ 8 | public class SendPrivateMessageOutboundMessage implements OutboundMessage { 9 | /** 10 | * The recipient of the message 11 | */ 12 | public final long recipient; 13 | 14 | /** 15 | * The message to send 16 | */ 17 | public final String message; 18 | 19 | /** 20 | * Creates a new private message to send to the server 21 | * 22 | * @param recipient The recipient of the message 23 | * @param message The message to send 24 | */ 25 | public SendPrivateMessageOutboundMessage(long recipient, String message) { 26 | this.recipient = recipient; 27 | this.message = message; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/chat/SetChatOptionsOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.chat; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | public class SetChatOptionsOutboundMessage implements OutboundMessage { 6 | public final int publicMode; 7 | 8 | public final int privateMode; 9 | 10 | public final int tradeMode; 11 | 12 | public SetChatOptionsOutboundMessage(int publicMode, int privateMode, int tradeMode) { 13 | this.publicMode = publicMode; 14 | this.privateMode = privateMode; 15 | this.tradeMode = tradeMode; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/console/ConsoleCommandOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.console; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * A message sent to the server when the player sends a console command. 7 | */ 8 | public class ConsoleCommandOutboundMessage implements OutboundMessage { 9 | /** 10 | * The full text of the command, including any arguments 11 | */ 12 | public final String command; 13 | 14 | /** 15 | * Creates a new {@link ConsoleCommandOutboundMessage} 16 | * @param command The full text of the command, including any arguments 17 | */ 18 | public ConsoleCommandOutboundMessage(String command) { 19 | this.command = command; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/examine/ExamineItemOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.examine; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * An {@link OutboundMessage} sent to the server to examine an item. 7 | */ 8 | public class ExamineItemOutboundMessage implements OutboundMessage { 9 | /** 10 | * The id of the item to examine. 11 | */ 12 | public final int itemId; 13 | 14 | /** 15 | * Creates a new {@link ExamineItemOutboundMessage}. 16 | * @param itemId The id of the item to examine. 17 | */ 18 | public ExamineItemOutboundMessage(int itemId) { 19 | this.itemId = itemId; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/examine/ExamineNPCOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.examine; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * An {@link OutboundMessage} sent to the server to examine an NPC. 7 | */ 8 | public class ExamineNPCOutboundMessage implements OutboundMessage { 9 | /** 10 | * The id of the NPC to examine. 11 | */ 12 | public final int npcId; 13 | 14 | /** 15 | * Creates a new {@link ExamineNPCOutboundMessage}. 16 | * @param npcId The id of the NPC to examine. 17 | */ 18 | public ExamineNPCOutboundMessage(int npcId) { 19 | this.npcId = npcId; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/examine/ExamineObjectOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.examine; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * An {@link OutboundMessage} sent to the server to examine an object. 7 | */ 8 | public class ExamineObjectOutboundMessage implements OutboundMessage { 9 | /** 10 | * The id of the object to examine. 11 | */ 12 | public final int objectId; 13 | 14 | /** 15 | * Creates a new {@link ExamineObjectOutboundMessage}. 16 | * @param objectId The id of the object to examine. 17 | */ 18 | public ExamineObjectOutboundMessage(int objectId) { 19 | this.objectId = objectId; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/interactions/NPCInteractionOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.interactions; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * Represents a message sent to the server when a player interacts with an NPC. 7 | * 8 | * e.g. talking, trading or pickpocketing 9 | */ 10 | public class NPCInteractionOutboundMessage implements OutboundMessage { 11 | /** 12 | * Which option on the npc was clicked 13 | * 14 | * i.e. 1 = first option, 2 = second option, etc. 15 | */ 16 | public final int option; 17 | 18 | /** 19 | * The index of the npc 20 | */ 21 | public final int npcIndex; 22 | 23 | public NPCInteractionOutboundMessage(int option, int npcIndex) { 24 | this.option = option; 25 | this.npcIndex = npcIndex; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/interactions/PlayerInteractionOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.interactions; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * Represents a message sent to the server when a player interacts with another player. 7 | * 8 | * e.g. trading, following, attacking 9 | */ 10 | public class PlayerInteractionOutboundMessage implements OutboundMessage { 11 | /** 12 | * Which option on the player was clicked 13 | * 14 | * i.e. 1 = first option, 2 = second option, etc. 15 | */ 16 | public final int option; 17 | 18 | /** 19 | * The index of the player 20 | */ 21 | public final int playerIndex; 22 | 23 | public PlayerInteractionOutboundMessage(int option, int playerIndex) { 24 | this.option = option; 25 | this.playerIndex = playerIndex; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/magic/BaseCastMagicOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.magic; 2 | 3 | /** 4 | * A base class for all "cast magic on X" messages. 5 | */ 6 | public abstract class BaseCastMagicOutboundMessage { 7 | /** 8 | * The id of the spell to cast. 9 | */ 10 | public final int spellId; 11 | 12 | /** 13 | * Creates a new {@link BaseCastMagicOutboundMessage}. 14 | * @param spellId The id of the spell to cast. 15 | */ 16 | public BaseCastMagicOutboundMessage(int spellId) { 17 | this.spellId = spellId; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/magic/CastMagicOnNPCOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.magic; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * A message sent to the server to cast a magic spell on a NPC. 7 | */ 8 | public class CastMagicOnNPCOutboundMessage extends BaseCastMagicOutboundMessage implements OutboundMessage { 9 | /** 10 | * The id of the NPC to cast the spell on. 11 | */ 12 | public final int npcId; 13 | 14 | /** 15 | * Creates a new {@link CastMagicOnNPCOutboundMessage}. 16 | * @param spellId The id of the spell to cast. 17 | * @param npcId The id of the NPC to cast the spell on. 18 | */ 19 | public CastMagicOnNPCOutboundMessage(int spellId, int npcId) { 20 | super(spellId); 21 | this.npcId = npcId; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/magic/CastMagicOnPlayerOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.magic; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * A message sent to the server to cast a magic spell on a player. 7 | */ 8 | public class CastMagicOnPlayerOutboundMessage extends BaseCastMagicOutboundMessage implements OutboundMessage { 9 | /** 10 | * The id of the player to cast the spell on. 11 | */ 12 | public final int playerId; 13 | 14 | /** 15 | * Creates a new {@link CastMagicOnPlayerOutboundMessage}. 16 | * @param spellId The id of the spell to cast. 17 | * @param playerId The id of the player to cast the spell on. 18 | */ 19 | public CastMagicOnPlayerOutboundMessage(int spellId, int playerId) { 20 | super(spellId); 21 | this.playerId = playerId; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/misc/ClickFlashingTabIconOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.misc; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * Sent when the user clicks/opens a flashing tab icon. 7 | */ 8 | public class ClickFlashingTabIconOutboundMessage implements OutboundMessage { 9 | public final int tabId; 10 | 11 | public ClickFlashingTabIconOutboundMessage(int tabId) { 12 | this.tabId = tabId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/widget/CloseWidgetsOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.widget; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * Sent to the server when the player closes widgets. 7 | * 8 | * This message has no properties. 9 | */ 10 | public class CloseWidgetsOutboundMessage implements OutboundMessage { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/widget/container/DragWidgetItemOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.widget.container; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | public class DragWidgetItemOutboundMessage implements OutboundMessage { 6 | /** 7 | * 0: swap items 8 | * 1: move item 9 | * 10 | * TODO make an enum for this and further clarify usages 11 | */ 12 | public final int moveType; 13 | 14 | public final int widgetId; 15 | 16 | public final int fromSlot; 17 | 18 | public final int toSlot; 19 | 20 | public DragWidgetItemOutboundMessage(int moveType, int widgetId, int fromSlot, int toSlot) { 21 | this.moveType = moveType; 22 | this.widgetId = widgetId; 23 | this.fromSlot = fromSlot; 24 | this.toSlot = toSlot; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/widget/container/DropWidgetItemOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.widget.container; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | public class DropWidgetItemOutboundMessage implements OutboundMessage { 6 | public final int widgetId; 7 | 8 | public final int containerId; 9 | 10 | public final int itemId; 11 | 12 | public final int slot; 13 | 14 | public DropWidgetItemOutboundMessage(int widgetId, int containerId, int itemId, int slot) { 15 | this.widgetId = widgetId; 16 | this.containerId = containerId; 17 | this.itemId = itemId; 18 | this.slot = slot; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/widget/input/ClickPleaseWaitWidgetOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.widget.input; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * Sent when the player clicks a "Please wait..." widget 7 | * 8 | * e.g. dialogues in the chatbox 9 | */ 10 | public class ClickPleaseWaitWidgetOutboundMessage implements OutboundMessage { 11 | public final int widgetId; 12 | 13 | public final int childId; 14 | 15 | public final int option; 16 | 17 | public ClickPleaseWaitWidgetOutboundMessage(int widgetId, int childId, int option) { 18 | this.widgetId = widgetId; 19 | this.childId = childId; 20 | this.option = option; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/widget/input/ClickWidgetButtonOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.widget.input; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | public class ClickWidgetButtonOutboundMessage implements OutboundMessage { 6 | public final int widgetId; 7 | public final int childId; 8 | 9 | public ClickWidgetButtonOutboundMessage(int widgetId, int childId) { 10 | this.widgetId = widgetId; 11 | this.childId = childId; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/widget/input/SubmitAppearanceOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.widget.input; 2 | 3 | import org.runejs.client.media.renderable.actor.PlayerAppearance; 4 | import org.runejs.client.message.OutboundMessage; 5 | 6 | /** 7 | * Submits the player's appearance, e.g. after customising it in an interface 8 | */ 9 | public class SubmitAppearanceOutboundMessage implements OutboundMessage { 10 | public final PlayerAppearance appearance; 11 | 12 | public SubmitAppearanceOutboundMessage(PlayerAppearance appearance) { 13 | this.appearance = appearance; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/widget/input/SubmitChatboxWidgetNameInputOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.widget.input; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * Submit a name input into a chatbox widget, e.g. an "Enter name" widget. 7 | */ 8 | public class SubmitChatboxWidgetNameInputOutboundMessage implements OutboundMessage { 9 | /** 10 | * The name to send, as a long 11 | */ 12 | public final long name; 13 | 14 | public SubmitChatboxWidgetNameInputOutboundMessage(long name) { 15 | this.name = name; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/widget/input/SubmitChatboxWidgetNumericInputOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.widget.input; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * Submit a numeric input into a chatbox widget, e.g. an "Enter amount" widget. 7 | */ 8 | public class SubmitChatboxWidgetNumericInputOutboundMessage implements OutboundMessage { 9 | public final int value; 10 | 11 | public SubmitChatboxWidgetNumericInputOutboundMessage(int value) { 12 | this.value = value; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/message/outbound/widget/input/SubmitReportAbuseOutboundMessage.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.message.outbound.widget.input; 2 | 3 | import org.runejs.client.message.OutboundMessage; 4 | 5 | /** 6 | * Submit a name input into a chatbox widget, e.g. an "Enter name" widget. 7 | */ 8 | public class SubmitReportAbuseOutboundMessage implements OutboundMessage { 9 | /** 10 | * The name to send, as a long 11 | */ 12 | public final long name; 13 | 14 | public final int reason; 15 | 16 | /** 17 | * Whether the player should be muted (if reporter is a moderator) 18 | */ 19 | public final boolean mutePlayer; 20 | 21 | public SubmitReportAbuseOutboundMessage(long name, int reason, boolean mutePlayer) { 22 | this.name = name; 23 | this.reason = reason; 24 | this.mutePlayer = mutePlayer; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/IUpdateServer.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net; 2 | 3 | import org.runejs.client.GameSocket; 4 | 5 | /** 6 | * TODO rename , remove I prefix 7 | */ 8 | public interface IUpdateServer { 9 | void receiveConnection(GameSocket socket, boolean isLoggedIn); 10 | 11 | boolean poll(); 12 | 13 | void resetRequests(boolean isLoggedIn); 14 | 15 | void close(); 16 | 17 | int getLoadedPercentage(int volume, int file); 18 | 19 | int getActiveTaskCount(boolean pending, boolean immediate); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/UpdateServerNode.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net; 2 | 3 | import org.runejs.client.cache.CacheArchive; 4 | import org.runejs.client.node.CachedNode; 5 | 6 | 7 | public class UpdateServerNode extends CachedNode { 8 | 9 | public CacheArchive cacheArchive; 10 | public byte padding; 11 | public int crc; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/MessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec; 2 | 3 | import org.runejs.client.net.PacketBuffer; 4 | import org.runejs.client.message.InboundMessage; 5 | 6 | /** 7 | * A message decoder is responsible for decoding a specific type of message. 8 | * 9 | * It takes a PacketBuffer and reads data from it to construct a message. 10 | * 11 | * @see org.runejs.client.message.InboundMessage 12 | * 13 | * @param The type of message to decode. 14 | */ 15 | public interface MessageDecoder { 16 | /** 17 | * Decodes a message from the given PacketBuffer. 18 | * 19 | * @param buffer The PacketBuffer to read from. 20 | * 21 | * @return The decoded TMessage. 22 | */ 23 | TMessage decode(PacketBuffer buffer); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/MessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec; 2 | 3 | import org.runejs.client.net.PacketBuffer; 4 | import org.runejs.client.message.OutboundMessage; 5 | 6 | /** 7 | * A message decoder is responsible for encoding a specific type of message. 8 | * 9 | * It constructs a PacketBuffer from an OutboundMessage. 10 | * 11 | * @see org.runejs.client.message.OutboundMessage 12 | * 13 | * @param The type of message to encode. 14 | */ 15 | public interface MessageEncoder { 16 | /** 17 | * Creates a PacketBuffer from the given TMessage. 18 | * 19 | * @param message The TMessage to encode. 20 | * 21 | * @return The encoded PacketBuffer. 22 | */ 23 | PacketBuffer encode(TMessage message); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/README.md: -------------------------------------------------------------------------------- 1 | # Codec system 2 | 3 | The codec system is responsible for converting between packets and messages. It is composed of two parts: 4 | 5 | - `MessageEncoder`s, which convert messages to packets 6 | - `MessageDecoder`s, which convert packets to messages 7 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/audio/PlayQuickSongMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.audio; 2 | 3 | import org.runejs.client.message.inbound.audio.PlaySongInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * Decodes the PlayQuickSong message 9 | */ 10 | public class PlayQuickSongMessageDecoder implements MessageDecoder { 11 | @Override 12 | public PlaySongInboundMessage decode(PacketBuffer buffer) { 13 | int songId = buffer.getUnsignedShortLE(); 14 | if(songId == 65535) 15 | songId = -1; 16 | 17 | return new PlaySongInboundMessage(songId); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/audio/PlaySongMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.audio; 2 | 3 | import org.runejs.client.message.inbound.audio.PlaySongInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class PlaySongMessageDecoder implements MessageDecoder { 8 | @Override 9 | public PlaySongInboundMessage decode(PacketBuffer buffer) { 10 | int songId = buffer.getUnsignedShortLE(); 11 | if(songId == 65535) 12 | songId = -1; 13 | 14 | return new PlaySongInboundMessage(songId); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/audio/PlaySoundMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.audio; 2 | 3 | import org.runejs.client.message.inbound.audio.PlaySoundInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * Decodes the PlaySoundInboundMessage 9 | */ 10 | public class PlaySoundMessageDecoder implements MessageDecoder { 11 | @Override 12 | public PlaySoundInboundMessage decode(PacketBuffer buffer) { 13 | int soundId = buffer.getUnsignedShortBE(); 14 | int volume = buffer.getUnsignedByte(); 15 | int delay = buffer.getUnsignedShortBE(); 16 | 17 | return new PlaySoundInboundMessage(soundId, volume, delay); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/camera/CutsceneCameraLookToMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.camera; 2 | 3 | import org.runejs.client.message.inbound.camera.CutsceneCameraLookToInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class CutsceneCameraLookToMessageDecoder implements MessageDecoder { 8 | @Override 9 | public CutsceneCameraLookToInboundMessage decode(PacketBuffer buffer) { 10 | int x = buffer.getUnsignedByte(); 11 | int y = buffer.getUnsignedByte(); 12 | int height = buffer.getUnsignedShortBE(); 13 | int speedBase = buffer.getUnsignedByte(); 14 | int speedScale = buffer.getUnsignedByte(); 15 | 16 | return new CutsceneCameraLookToInboundMessage(x, y, height, speedBase, speedScale); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/camera/CutsceneCameraMoveToMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.camera; 2 | 3 | import org.runejs.client.message.inbound.camera.CutsceneCameraMoveToInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class CutsceneCameraMoveToMessageDecoder implements MessageDecoder { 8 | @Override 9 | public CutsceneCameraMoveToInboundMessage decode(PacketBuffer buffer) { 10 | int x = buffer.getUnsignedByte(); 11 | int y = buffer.getUnsignedByte(); 12 | int height = buffer.getUnsignedShortBE(); 13 | int speedBase = buffer.getUnsignedByte(); 14 | int speedScale = buffer.getUnsignedByte(); 15 | 16 | return new CutsceneCameraMoveToInboundMessage(x, y, height, speedBase, speedScale); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/camera/CutsceneExitMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.camera; 2 | 3 | import org.runejs.client.message.inbound.camera.CutsceneExitInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * Exits the cutscene camera. 9 | * 10 | * This message has no properties. 11 | */ 12 | public class CutsceneExitMessageDecoder implements MessageDecoder { 13 | @Override 14 | public CutsceneExitInboundMessage decode(PacketBuffer buffer) { 15 | return new CutsceneExitInboundMessage(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/camera/ShakeCameraMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.camera; 2 | 3 | import org.runejs.client.message.inbound.camera.ShakeCameraInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ShakeCameraMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ShakeCameraInboundMessage decode(PacketBuffer buffer) { 10 | int cameraType = buffer.getUnsignedByte(); 11 | int jitter = buffer.getUnsignedByte(); 12 | int amplitude = buffer.getUnsignedByte(); 13 | int frequency = buffer.getUnsignedByte(); 14 | 15 | return new ShakeCameraInboundMessage(cameraType, jitter, amplitude, frequency); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/chat/ForcedPrivateMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.chat; 2 | 3 | import org.runejs.client.MovedStatics; 4 | import org.runejs.client.RSString; 5 | import org.runejs.client.message.inbound.chat.ForcedPrivateMessageInboundMessage; 6 | import org.runejs.client.net.PacketBuffer; 7 | import org.runejs.client.net.codec.MessageDecoder; 8 | 9 | /** 10 | * A {@link MessageDecoder} that decodes {@link ForcedPrivateMessageInboundMessage}s. 11 | */ 12 | public class ForcedPrivateMessageDecoder implements MessageDecoder { 13 | @Override 14 | public ForcedPrivateMessageInboundMessage decode(PacketBuffer buffer) { 15 | long username = buffer.getLongBE(); 16 | String message = RSString.formatChatString(MovedStatics.method956(buffer)); 17 | 18 | return new ForcedPrivateMessageInboundMessage(username, message); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/chat/FriendChangedWorldMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.chat; 2 | 3 | import org.runejs.client.message.inbound.chat.FriendChangedWorldInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * A {@link MessageDecoder} that decodes {@link FriendChangedWorldInboundMessage}s. 9 | */ 10 | public class FriendChangedWorldMessageDecoder implements MessageDecoder { 11 | @Override 12 | public FriendChangedWorldInboundMessage decode(PacketBuffer buffer) { 13 | long nameAsLong = buffer.getLongBE(); 14 | int worldId = buffer.getUnsignedShortBE(); 15 | 16 | return new FriendChangedWorldInboundMessage(nameAsLong, worldId); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/chat/ReceiveChatboxMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.chat; 2 | 3 | import org.runejs.client.message.inbound.chat.ReceiveChatboxMessageInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * A {@link MessageDecoder} that decodes {@link ReceiveChatboxMessageInboundMessage}s. 9 | */ 10 | public class ReceiveChatboxMessageDecoder implements MessageDecoder { 11 | @Override 12 | public ReceiveChatboxMessageInboundMessage decode(PacketBuffer buffer) { 13 | String message = buffer.getString(); 14 | 15 | return new ReceiveChatboxMessageInboundMessage(message); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/chat/SetChatModesMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.chat; 2 | 3 | import org.runejs.client.message.inbound.chat.SetChatModesInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * A {@link MessageDecoder} that decodes {@link SetChatModesInboundMessage}s. 9 | */ 10 | public class SetChatModesMessageDecoder implements MessageDecoder { 11 | @Override 12 | public SetChatModesInboundMessage decode(PacketBuffer buffer) { 13 | int publicChatMode = buffer.getUnsignedByte(); 14 | int privateChatMode = buffer.getUnsignedByte(); 15 | int tradeMode = buffer.getUnsignedByte(); 16 | 17 | return new SetChatModesInboundMessage(publicChatMode, privateChatMode, tradeMode); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/chat/SetFriendsListStatusMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.chat; 2 | 3 | import org.runejs.client.message.inbound.chat.SetFriendsListStatusInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * A {@link MessageDecoder} that decodes {@link SetFriendsListStatusInboundMessage}s. 9 | */ 10 | public class SetFriendsListStatusMessageDecoder implements MessageDecoder { 11 | @Override 12 | public SetFriendsListStatusInboundMessage decode(PacketBuffer buffer) { 13 | int friendListStatus = buffer.getUnsignedByte(); 14 | return new SetFriendsListStatusInboundMessage(friendListStatus); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/chat/UpdateIgnoreListMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.chat; 2 | 3 | import org.runejs.client.message.inbound.chat.UpdateIgnoreListInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class UpdateIgnoreListMessageDecoder implements MessageDecoder { 8 | @Override 9 | public UpdateIgnoreListInboundMessage decode(PacketBuffer buffer) { 10 | int count = buffer.getSize() / 8; 11 | 12 | long[] ignores = new long[count]; 13 | for (int i = 0; i < count; i++) { 14 | ignores[i] = buffer.getLongBE(); 15 | } 16 | 17 | return new UpdateIgnoreListInboundMessage(ignores); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/config/ResetVarbitsMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.config; 2 | 3 | import org.runejs.client.message.inbound.config.ResetVarbitsInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ResetVarbitsMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ResetVarbitsInboundMessage decode(PacketBuffer buffer) { 10 | return new ResetVarbitsInboundMessage(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/config/ResetVarpsMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.config; 2 | 3 | import org.runejs.client.message.inbound.config.ResetVarpsInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ResetVarpsMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ResetVarpsInboundMessage decode(PacketBuffer buffer) { 10 | return new ResetVarpsInboundMessage(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/config/SetVarpByteMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.config; 2 | 3 | import org.runejs.client.message.inbound.config.SetVarpValueInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * Decodes a packet sending a varp value as a byte. 9 | */ 10 | public class SetVarpByteMessageDecoder implements MessageDecoder { 11 | @Override 12 | public SetVarpValueInboundMessage decode(PacketBuffer buffer) { 13 | byte value = buffer.getByte(); 14 | int index = buffer.getUnsignedShortBE(); 15 | 16 | return new SetVarpValueInboundMessage(index, value); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/config/SetVarpIntMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.config; 2 | 3 | import org.runejs.client.message.inbound.config.SetVarpValueInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * Decodes a packet sending a varp value as a byte. 9 | */ 10 | public class SetVarpIntMessageDecoder implements MessageDecoder { 11 | @Override 12 | public SetVarpValueInboundMessage decode(PacketBuffer buffer) { 13 | int value = buffer.getIntBE(); 14 | int index = buffer.getUnsignedShortBE(); 15 | 16 | return new SetVarpValueInboundMessage(index, value); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/console/ReceiveConsoleCommandMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.console; 2 | 3 | import org.runejs.client.message.inbound.console.ReceiveConsoleCommandMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * A {@link MessageDecoder} that decodes {@link ReceiveConsoleCommandMessage}s. 9 | */ 10 | public class ReceiveConsoleCommandMessageDecoder implements MessageDecoder { 11 | @Override 12 | public ReceiveConsoleCommandMessage decode(PacketBuffer buffer) { 13 | String command = buffer.getString(); 14 | String help = buffer.getString(); 15 | 16 | return new ReceiveConsoleCommandMessage(command, help); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/console/ReceiveConsoleLogMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.console; 2 | 3 | import org.runejs.client.RSString; 4 | import org.runejs.client.message.inbound.console.ReceiveConsoleLogMessage; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageDecoder; 7 | 8 | /** 9 | * A {@link MessageDecoder} that decodes {@link ReceiveConsoleLogMessage}s. 10 | */ 11 | public class ReceiveConsoleLogMessageDecoder implements MessageDecoder { 12 | @Override 13 | public ReceiveConsoleLogMessage decode(PacketBuffer buffer) { 14 | RSString message = buffer.getRSString(); 15 | 16 | return new ReceiveConsoleLogMessage(message); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/misc/FlashTabIconMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.misc; 2 | 3 | import org.runejs.client.message.inbound.misc.FlashTabIconInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class FlashTabIconMessageDecoder implements MessageDecoder { 8 | @Override 9 | public FlashTabIconInboundMessage decode(PacketBuffer buffer) { 10 | int tabId = buffer.getUnsignedByte(); 11 | 12 | return new FlashTabIconInboundMessage(tabId); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/misc/LogoutMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.misc; 2 | 3 | import org.runejs.client.message.inbound.misc.LogoutMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * A {@link MessageDecoder} that decodes {@link LogoutMessage}s. 9 | */ 10 | public class LogoutMessageDecoder implements MessageDecoder { 11 | @Override 12 | public LogoutMessage decode(PacketBuffer buffer) { 13 | return new LogoutMessage(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/misc/SetCurrentTabMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.misc; 2 | 3 | import org.runejs.client.message.inbound.misc.SetCurrentTabInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetCurrentTabMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetCurrentTabInboundMessage decode(PacketBuffer buffer) { 10 | int tabId = buffer.getUnsignedByte(); 11 | return new SetCurrentTabInboundMessage(tabId); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/misc/SetMinimapStateMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.misc; 2 | 3 | import org.runejs.client.message.inbound.misc.SetMinimapStateInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetMinimapStateMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetMinimapStateInboundMessage decode(PacketBuffer buffer) { 10 | int minimapState = buffer.getUnsignedByte(); 11 | return new SetMinimapStateInboundMessage(minimapState); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/misc/SetMultiCombatStateMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.misc; 2 | 3 | import org.runejs.client.message.inbound.misc.SetMultiCombatStateInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetMultiCombatStateMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetMultiCombatStateInboundMessage decode(PacketBuffer buffer) { 10 | int multiCombatState = buffer.getUnsignedByte(); 11 | return new SetMultiCombatStateInboundMessage(multiCombatState); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/misc/SetSystemUpdateTimeMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.misc; 2 | 3 | import org.runejs.client.message.inbound.misc.SetSystemUpdateTimeInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetSystemUpdateTimeMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetSystemUpdateTimeInboundMessage decode(PacketBuffer buffer) { 10 | int time = buffer.getUnsignedShortLE() * 30; 11 | 12 | return new SetSystemUpdateTimeInboundMessage(time); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/misc/UpdateCarryWeightMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.misc; 2 | 3 | import org.runejs.client.message.inbound.misc.UpdateCarryWeightMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * A {@link MessageDecoder} that decodes {@link UpdateCarryWeightMessage}s. 9 | */ 10 | public class UpdateCarryWeightMessageDecoder implements MessageDecoder { 11 | @Override 12 | public UpdateCarryWeightMessage decode(PacketBuffer buffer) { 13 | int amount = buffer.getShortBE(); 14 | 15 | return new UpdateCarryWeightMessage(amount); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/misc/UpdatePlayerOptionsMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.misc; 2 | 3 | import org.runejs.client.message.inbound.misc.UpdatePlayerOptionsInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class UpdatePlayerOptionsMessageDecoder implements MessageDecoder { 8 | @Override 9 | public UpdatePlayerOptionsInboundMessage decode(PacketBuffer buffer) { 10 | String option = buffer.getString(); 11 | boolean lowPriority = buffer.getUnsignedByte() == 0; 12 | int index = buffer.getUnsignedByte(); 13 | 14 | return new UpdatePlayerOptionsInboundMessage(index, option, lowPriority); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/misc/UpdateRunEnergyMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.misc; 2 | 3 | import org.runejs.client.message.inbound.misc.UpdateRunEnergyMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * A {@link MessageDecoder} that decodes {@link UpdateRunEnergyMessage}s. 9 | */ 10 | public class UpdateRunEnergyMessageDecoder implements MessageDecoder { 11 | @Override 12 | public UpdateRunEnergyMessage decode(PacketBuffer buffer) { 13 | int amount = buffer.getUnsignedByte(); 14 | 15 | return new UpdateRunEnergyMessage(amount); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/misc/UpdateSkillMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.misc; 2 | 3 | import org.runejs.client.message.inbound.misc.UpdateSkillMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * A {@link MessageDecoder} that decodes {@link UpdateSkillMessage}s. 9 | */ 10 | public class UpdateSkillMessageDecoder implements MessageDecoder { 11 | @Override 12 | public UpdateSkillMessage decode(PacketBuffer buffer) { 13 | int skillLevel = buffer.getUnsignedByte(); 14 | int skillId = buffer.getUnsignedByte(); 15 | int skillExperience = buffer.getIntLE(); 16 | 17 | return new UpdateSkillMessage(skillId, skillLevel, skillExperience); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/region/ClearChunkMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.region; 2 | 3 | import org.runejs.client.message.inbound.region.ClearChunkInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * Decodes a {@link ClearChunkInboundMessage} from a {@link PacketBuffer}. 9 | */ 10 | public class ClearChunkMessageDecoder implements MessageDecoder { 11 | @Override 12 | public ClearChunkInboundMessage decode(PacketBuffer buffer) { 13 | int y = buffer.getUnsignedByte(); 14 | int x = buffer.getUnsignedByte(); 15 | 16 | return new ClearChunkInboundMessage(x, y); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/region/UpdateReferencePositionMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.region; 2 | 3 | import org.runejs.client.message.inbound.region.UpdateReferencePositionInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * Decodes an {@link UpdateReferencePositionInboundMessage} from a {@link PacketBuffer}. 9 | */ 10 | public class UpdateReferencePositionMessageDecoder implements MessageDecoder { 11 | @Override 12 | public UpdateReferencePositionInboundMessage decode(PacketBuffer buffer) { 13 | int y = buffer.getUnsignedByte(); 14 | int x = buffer.getUnsignedByte(); 15 | 16 | return new UpdateReferencePositionInboundMessage(x, y); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/updating/ClearLocalPlayerDestinationMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.updating; 2 | 3 | import org.runejs.client.message.inbound.updating.ClearLocalPlayerDestinationInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * Clear the local player's walking destination (i.e. the flag on the minimap) 9 | * 10 | * This message has no properties. 11 | */ 12 | public class ClearLocalPlayerDestinationMessageDecoder implements MessageDecoder { 13 | @Override 14 | public ClearLocalPlayerDestinationInboundMessage decode(PacketBuffer buffer) { 15 | return new ClearLocalPlayerDestinationInboundMessage(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/updating/ResetAllActorAnimationsMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.updating; 2 | 3 | import org.runejs.client.message.inbound.updating.ResetAllActorAnimationsInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ResetAllActorAnimationsMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ResetAllActorAnimationsInboundMessage decode(PacketBuffer buffer) { 10 | return new ResetAllActorAnimationsInboundMessage(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/updating/SetLocalPlayerPositionMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.updating; 2 | 3 | import org.runejs.client.message.inbound.updating.SetLocalPlayerPositionInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetLocalPlayerPositionMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetLocalPlayerPositionInboundMessage decode(PacketBuffer buffer) { 10 | int heightAndTeleporting = buffer.getUnsignedByte(); 11 | int y = buffer.getUnsignedByte(); 12 | int x = buffer.getUnsignedByte(); 13 | 14 | boolean teleporting = (heightAndTeleporting & 0x1) == 1; 15 | int level = heightAndTeleporting >> 1; 16 | 17 | return new SetLocalPlayerPositionInboundMessage(x, y, level, teleporting); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/SetWidgetPositionMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget; 2 | 3 | import org.runejs.client.message.inbound.widget.SetWidgetPositionInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetWidgetPositionMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetWidgetPositionInboundMessage decode(PacketBuffer buffer) { 10 | int interfaceData = buffer.getIntBE(); 11 | int x = buffer.getShortLE(); 12 | int y = buffer.getShortLE(); 13 | 14 | int widgetId = (interfaceData >> 16) & 0xFFFF; 15 | int childId = interfaceData & 0xFFFF; 16 | 17 | return new SetWidgetPositionInboundMessage(widgetId, childId, x, y); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/SetWidgetScrollPositionMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget; 2 | 3 | import org.runejs.client.message.inbound.widget.SetWidgetScrollPositionInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetWidgetScrollPositionMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetWidgetScrollPositionInboundMessage decode(PacketBuffer buffer) { 10 | int scrollPosition = buffer.getUnsignedShortBE(); 11 | int interfaceData = buffer.getIntLE(); 12 | 13 | int widgetId = (interfaceData >> 16) & 0xFFFF; 14 | int childId = interfaceData & 0xFFFF; 15 | 16 | return new SetWidgetScrollPositionInboundMessage(widgetId, childId, scrollPosition); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/container/ClearWidgetItemsMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.container; 2 | 3 | import org.runejs.client.message.inbound.widget.container.ClearWidgetItemsInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ClearWidgetItemsMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ClearWidgetItemsInboundMessage decode(PacketBuffer buffer) { 10 | final int interfaceData = buffer.getIntME1(); 11 | int widgetId = (interfaceData >> 16) & 0xFFFF; 12 | int childId = interfaceData & 0xFFFF; 13 | 14 | return new ClearWidgetItemsInboundMessage(widgetId, childId); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/input/ShowNumberInputWidgetMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.input; 2 | 3 | import org.runejs.client.message.inbound.widget.input.ShowNumberInputWidgetInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * Shows the "Enter amount:" input. 9 | * 10 | * This message has no properties. 11 | */ 12 | public class ShowNumberInputWidgetMessageDecoder implements MessageDecoder { 13 | @Override 14 | public ShowNumberInputWidgetInboundMessage decode(PacketBuffer buffer) { 15 | return new ShowNumberInputWidgetInboundMessage(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/input/ShowTextInputWidgetMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.input; 2 | 3 | import org.runejs.client.message.inbound.widget.input.ShowTextInputWidgetInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * Shows the "Enter name:" input. 9 | * 10 | * This message has no properties. 11 | */ 12 | public class ShowTextInputWidgetMessageDecoder implements MessageDecoder { 13 | @Override 14 | public ShowTextInputWidgetInboundMessage decode(PacketBuffer buffer) { 15 | return new ShowTextInputWidgetInboundMessage(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/model/AnimateWidgetModelMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.model; 2 | 3 | import org.runejs.client.message.inbound.widget.model.AnimateWidgetModelInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class AnimateWidgetModelMessageDecoder implements MessageDecoder { 8 | @Override 9 | public AnimateWidgetModelInboundMessage decode(PacketBuffer buffer) { 10 | int animationId = buffer.getShortBE(); 11 | int interfaceData = buffer.getIntBE(); 12 | 13 | int widgetId = (interfaceData >> 16) & 0xFFFF; 14 | int childId = interfaceData & 0xFFFF; 15 | 16 | return new AnimateWidgetModelInboundMessage(widgetId, childId, animationId); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/model/SetWidgetLocalPlayerChatheadModelMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.model; 2 | 3 | import org.runejs.client.message.inbound.widget.model.SetWidgetLocalPlayerChatheadModelInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetWidgetLocalPlayerChatheadModelMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetWidgetLocalPlayerChatheadModelInboundMessage decode(PacketBuffer buffer) { 10 | int interfaceData = buffer.getIntLE(); 11 | 12 | int widgetId = (interfaceData >> 16) & 0xFFFF; 13 | int childId = interfaceData & 0xFFFF; 14 | 15 | return new SetWidgetLocalPlayerChatheadModelInboundMessage(widgetId, childId); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/model/SetWidgetModelMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.model; 2 | 3 | import org.runejs.client.message.inbound.widget.model.SetWidgetModelInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetWidgetModelMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetWidgetModelInboundMessage decode(PacketBuffer buffer) { 10 | int modelId = buffer.getUnsignedShortLE(); 11 | int interfaceData = buffer.getIntLE(); 12 | 13 | int widgetId = (interfaceData >> 16) & 0xFFFF; 14 | int childId = interfaceData & 0xFFFF; 15 | 16 | return new SetWidgetModelInboundMessage(widgetId, childId, modelId); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/model/SetWidgetNPCChatheadModelMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.model; 2 | 3 | import org.runejs.client.message.inbound.widget.model.SetWidgetNPCChatheadModelInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetWidgetNPCChatheadModelMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetWidgetNPCChatheadModelInboundMessage decode(PacketBuffer buffer) { 10 | int npcId = buffer.getUnsignedShortLE(); 11 | int interfaceData = buffer.getIntLE(); 12 | 13 | int widgetId = (interfaceData >> 16) & 0xFFFF; 14 | int childId = interfaceData & 0xFFFF; 15 | 16 | return new SetWidgetNPCChatheadModelInboundMessage(widgetId, childId, npcId); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/text/SetWidgetTextColorMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.text; 2 | 3 | import org.runejs.client.message.inbound.widget.text.SetWidgetTextColorInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetWidgetTextColorMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetWidgetTextColorInboundMessage decode(PacketBuffer buffer) { 10 | int color = buffer.getUnsignedShortBE(); 11 | int interfaceData = buffer.getIntLE(); 12 | 13 | int widgetId = (interfaceData >> 16) & 0xFFFF; 14 | int childId = interfaceData & 0xFFFF; 15 | 16 | return new SetWidgetTextColorInboundMessage(widgetId, childId, color); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/text/SetWidgetTextMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.text; 2 | 3 | import org.runejs.client.message.inbound.widget.text.SetWidgetTextInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetWidgetTextMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetWidgetTextInboundMessage decode(PacketBuffer buffer) { 10 | int interfaceData = buffer.getIntLE(); 11 | 12 | int widgetId = (interfaceData >> 16) & 0xFFFF; 13 | int childId = interfaceData & 0xFFFF; 14 | 15 | String interfaceText = buffer.getString(); 16 | 17 | return new SetWidgetTextInboundMessage(widgetId, childId, interfaceText); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/visibility/CloseAllWidgetsMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.visibility; 2 | 3 | import org.runejs.client.message.inbound.widget.visibility.CloseAllWidgetsInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | /** 8 | * Decodes {@link CloseAllWidgetsInboundMessage}. 9 | * 10 | * This message has no properties. 11 | */ 12 | public class CloseAllWidgetsMessageDecoder implements MessageDecoder { 13 | @Override 14 | public CloseAllWidgetsInboundMessage decode(PacketBuffer buffer) { 15 | return new CloseAllWidgetsInboundMessage(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/visibility/ReplaceTabWidgetMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.visibility; 2 | 3 | import org.runejs.client.message.inbound.widget.visibility.ReplaceTabWidgetInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ReplaceTabWidgetMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ReplaceTabWidgetInboundMessage decode(PacketBuffer buffer) { 10 | int interfaceId = buffer.getUnsignedShortBE(); 11 | int tabIndex = buffer.getUnsignedByte(); 12 | if(interfaceId == 65535) 13 | interfaceId = -1; 14 | 15 | return new ReplaceTabWidgetInboundMessage(interfaceId, tabIndex); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/visibility/SetReportAbuseWidgetMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.visibility; 2 | 3 | import org.runejs.client.message.inbound.widget.visibility.SetReportAbuseWidgetInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetReportAbuseWidgetMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetReportAbuseWidgetInboundMessage decode(PacketBuffer buffer) { 10 | int widgetId = buffer.getUnsignedShortLE(); 11 | 12 | return new SetReportAbuseWidgetInboundMessage(widgetId); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/visibility/SetWidgetHiddenMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.visibility; 2 | 3 | import org.runejs.client.message.inbound.widget.visibility.SetWidgetHiddenInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class SetWidgetHiddenMessageDecoder implements MessageDecoder { 8 | @Override 9 | public SetWidgetHiddenInboundMessage decode(PacketBuffer buffer) { 10 | boolean isHidden = buffer.getUnsignedByte() == 1; 11 | int interfaceData = buffer.getIntLE(); 12 | 13 | int widgetId = (interfaceData >> 16) & 0xFFFF; 14 | int childId = interfaceData & 0xFFFF; 15 | 16 | return new SetWidgetHiddenInboundMessage(widgetId, childId, isHidden); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/visibility/ShowChatboxWidgetMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.visibility; 2 | 3 | import org.runejs.client.message.inbound.widget.visibility.ShowChatboxWidgetInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ShowChatboxWidgetMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ShowChatboxWidgetInboundMessage decode(PacketBuffer buffer) { 10 | int widgetId = buffer.getUnsignedShortBE(); 11 | 12 | return new ShowChatboxWidgetInboundMessage(widgetId); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/visibility/ShowFullScreenWidgetMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.visibility; 2 | 3 | import org.runejs.client.message.inbound.widget.visibility.ShowFullScreenWidgetInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ShowFullScreenWidgetMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ShowFullScreenWidgetInboundMessage decode(PacketBuffer buffer) { 10 | int siblingInterfaceId = buffer.getUnsignedShortBE(); 11 | int interfaceId = buffer.getUnsignedShortBE(); 12 | 13 | return new ShowFullScreenWidgetInboundMessage(interfaceId, siblingInterfaceId); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/visibility/ShowPermanentChatboxWidgetMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.visibility; 2 | 3 | import org.runejs.client.message.inbound.widget.visibility.ShowPermanentChatboxWidgetInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ShowPermanentChatboxWidgetMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ShowPermanentChatboxWidgetInboundMessage decode(PacketBuffer buffer) { 10 | int chatboxInterfaceId = buffer.getShortBE(); 11 | 12 | return new ShowPermanentChatboxWidgetInboundMessage(chatboxInterfaceId); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/visibility/ShowScreenWidgetMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.visibility; 2 | 3 | import org.runejs.client.message.inbound.widget.visibility.ShowScreenWidgetInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ShowScreenWidgetMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ShowScreenWidgetInboundMessage decode(PacketBuffer buffer) { 10 | int widgetId = buffer.getUnsignedShortBE(); 11 | 12 | return new ShowScreenWidgetInboundMessage(widgetId); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/visibility/ShowTabAndScreenWidgetMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.visibility; 2 | 3 | import org.runejs.client.message.inbound.widget.visibility.ShowTabAndScreenWidgetInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ShowTabAndScreenWidgetMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ShowTabAndScreenWidgetInboundMessage decode(PacketBuffer buffer) { 10 | int tabWidgetId = buffer.getUnsignedShortBE(); 11 | int screenWidgetId = buffer.getUnsignedShortLE(); 12 | 13 | return new ShowTabAndScreenWidgetInboundMessage(screenWidgetId, tabWidgetId); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/visibility/ShowTabWidgetMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.visibility; 2 | 3 | import org.runejs.client.message.inbound.widget.visibility.ShowTabWidgetInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ShowTabWidgetMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ShowTabWidgetInboundMessage decode(PacketBuffer buffer) { 10 | int widgetId = buffer.getUnsignedShortBE(); 11 | 12 | return new ShowTabWidgetInboundMessage(widgetId); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/widget/visibility/ShowWalkableScreenWidgetMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.widget.visibility; 2 | 3 | import org.runejs.client.message.inbound.widget.visibility.ShowWalkableScreenWidgetInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class ShowWalkableScreenWidgetMessageDecoder implements MessageDecoder { 8 | @Override 9 | public ShowWalkableScreenWidgetInboundMessage decode(PacketBuffer buffer) { 10 | int widgetId = buffer.getShortBE(); 11 | 12 | return new ShowWalkableScreenWidgetInboundMessage(widgetId); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/world/CreateStationaryGFXMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.world; 2 | 3 | import org.runejs.client.message.inbound.world.CreateStationaryGFXInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class CreateStationaryGFXMessageDecoder implements MessageDecoder { 8 | @Override 9 | public CreateStationaryGFXInboundMessage decode(PacketBuffer buffer) { 10 | int positionData = buffer.getUnsignedByte(); 11 | int x = ((0x78 & positionData) >> 4); 12 | int y = (0x7 & positionData); 13 | int gfxId = buffer.getUnsignedShortBE(); 14 | int drawHeight = buffer.getUnsignedByte(); 15 | int delay = buffer.getUnsignedShortBE(); 16 | 17 | return new CreateStationaryGFXInboundMessage(gfxId, x, y, drawHeight, delay); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/world/item/AddGroundItemMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.world.item; 2 | 3 | import org.runejs.client.message.inbound.world.item.AddGroundItemInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class AddGroundItemMessageDecoder implements MessageDecoder { 8 | @Override 9 | public AddGroundItemInboundMessage decode(PacketBuffer buffer) { 10 | int itemId = buffer.getUnsignedShortLE(); 11 | int amount = buffer.getUnsignedShortBE(); 12 | int positionInfo = buffer.getUnsignedByte(); 13 | int y = (positionInfo & 0x7); 14 | int x = ((0x7a & positionInfo) >> 4); 15 | 16 | return new AddGroundItemInboundMessage(itemId, amount, x, y, -1); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/world/item/RemoveGroundItemMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.world.item; 2 | 3 | import org.runejs.client.message.inbound.world.item.RemoveGroundItemInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class RemoveGroundItemMessageDecoder implements MessageDecoder { 8 | @Override 9 | public RemoveGroundItemInboundMessage decode(PacketBuffer buffer) { 10 | int positionInfo = buffer.getUnsignedByte(); 11 | int y = (positionInfo & 0x7); 12 | int x = ((0x7a & positionInfo) >> 4); 13 | int itemId = buffer.getUnsignedShortBE(); 14 | 15 | return new RemoveGroundItemInboundMessage(itemId, x, y); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/decoder/world/object/RemoveObjectMessageDecoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.decoder.world.object; 2 | 3 | import org.runejs.client.message.inbound.world.object.RemoveObjectInboundMessage; 4 | import org.runejs.client.net.PacketBuffer; 5 | import org.runejs.client.net.codec.MessageDecoder; 6 | 7 | public class RemoveObjectMessageDecoder implements MessageDecoder { 8 | @Override 9 | public RemoveObjectInboundMessage decode(PacketBuffer buffer) { 10 | int offset = buffer.getUnsignedByte(); 11 | int y = (0x7 & offset); 12 | int x = (offset >> 4 & 0x7); 13 | int data = buffer.getUnsignedByte(); 14 | int orientation = data & 0x3; 15 | int objectTypeIndex = data >> 2; 16 | 17 | return new RemoveObjectInboundMessage(x, y, objectTypeIndex, orientation); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/chat/ChatCommandMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.chat; 2 | 3 | import org.runejs.client.message.outbound.chat.ChatCommandOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.VariableLengthPacketBuffer; 7 | import org.runejs.client.net.codec.MessageEncoder; 8 | 9 | /** 10 | * A {@link MessageEncoder} for the {@link ChatCommandOutboundMessage}. 11 | */ 12 | public class ChatCommandMessageEncoder implements MessageEncoder { 13 | @Override 14 | public PacketBuffer encode(ChatCommandOutboundMessage message) { 15 | VariableLengthPacketBuffer buffer = OutgoingPackets.openVariableSizePacket(248); 16 | 17 | buffer.putString(message.command); 18 | 19 | buffer.writePacketLength(); 20 | 21 | return buffer; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/chat/SetChatOptionsMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.chat; 2 | 3 | import org.runejs.client.message.outbound.chat.SetChatOptionsOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | public class SetChatOptionsMessageEncoder implements MessageEncoder { 9 | @Override 10 | public PacketBuffer encode(SetChatOptionsOutboundMessage message) { 11 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(3, 32); 12 | 13 | buffer.putByte(message.publicMode); 14 | buffer.putByte(message.privateMode); 15 | buffer.putByte(message.tradeMode); 16 | 17 | return buffer; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/examine/ExamineItemMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.examine; 2 | 3 | import org.runejs.client.message.outbound.examine.ExamineItemOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | /** 9 | * Encodes a {@link ExamineItemOutboundMessage} into a {@link PacketBuffer}. 10 | */ 11 | public class ExamineItemMessageEncoder implements MessageEncoder { 12 | @Override 13 | public PacketBuffer encode(ExamineItemOutboundMessage message) { 14 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(2, 151); 15 | 16 | buffer.putShortLE(message.itemId); 17 | 18 | return buffer; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/examine/ExamineNPCMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.examine; 2 | 3 | import org.runejs.client.message.outbound.examine.ExamineNPCOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | /** 9 | * Encodes a {@link ExamineNPCOutboundMessage} into a {@link PacketBuffer}. 10 | */ 11 | public class ExamineNPCMessageEncoder implements MessageEncoder { 12 | @Override 13 | public PacketBuffer encode(ExamineNPCOutboundMessage message) { 14 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(2, 247); 15 | 16 | buffer.putShortLE(message.npcId); 17 | 18 | return buffer; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/examine/ExamineObjectMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.examine; 2 | 3 | import org.runejs.client.message.outbound.examine.ExamineObjectOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | /** 9 | * Encodes a {@link ExamineObjectOutboundMessage} into a {@link PacketBuffer}. 10 | */ 11 | public class ExamineObjectMessageEncoder implements MessageEncoder { 12 | @Override 13 | public PacketBuffer encode(ExamineObjectOutboundMessage message) { 14 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(2, 148); 15 | 16 | buffer.putShortLE(message.objectId); 17 | 18 | return buffer; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/magic/CastMagicOnNPCMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.magic; 2 | 3 | import org.runejs.client.message.outbound.magic.CastMagicOnNPCOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | /** 9 | * A {@link MessageEncoder} for the {@link CastMagicOnNPCOutboundMessage}. 10 | */ 11 | public class CastMagicOnNPCMessageEncoder implements MessageEncoder { 12 | @Override 13 | public PacketBuffer encode(CastMagicOnNPCOutboundMessage message) { 14 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(6, 253); 15 | 16 | buffer.putShortBE(message.npcId); 17 | buffer.putIntME1(message.spellId); 18 | 19 | return buffer; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/magic/CastMagicOnPlayerMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.magic; 2 | 3 | import org.runejs.client.message.outbound.magic.CastMagicOnPlayerOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | /** 9 | * A {@link MessageEncoder} for the {@link CastMagicOnPlayerOutboundMessage}. 10 | */ 11 | public class CastMagicOnPlayerMessageEncoder implements MessageEncoder { 12 | @Override 13 | public PacketBuffer encode(CastMagicOnPlayerOutboundMessage message) { 14 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(6, 221); 15 | 16 | buffer.putIntME1(message.spellId); 17 | buffer.putShortLE(message.playerId); 18 | 19 | return buffer; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/misc/ClickFlashingTabIconMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.misc; 2 | 3 | import org.runejs.client.message.outbound.misc.ClickFlashingTabIconOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | public class ClickFlashingTabIconMessageEncoder implements MessageEncoder { 9 | @Override 10 | public PacketBuffer encode(ClickFlashingTabIconOutboundMessage message) { 11 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(1, 44); 12 | 13 | buffer.putByte(message.tabId); 14 | 15 | return buffer; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/widget/CloseWidgetsMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.widget; 2 | 3 | import org.runejs.client.message.outbound.widget.CloseWidgetsOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | public class CloseWidgetsMessageEncoder implements MessageEncoder { 9 | @Override 10 | public PacketBuffer encode(CloseWidgetsOutboundMessage message) { 11 | 12 | return OutgoingPackets.openFixedSizePacket(0, 176); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/widget/container/DragWidgetItemMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.widget.container; 2 | 3 | import org.runejs.client.message.outbound.widget.container.DragWidgetItemOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | public class DragWidgetItemMessageEncoder implements MessageEncoder { 9 | @Override 10 | public PacketBuffer encode(DragWidgetItemOutboundMessage message) { 11 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(9, 83); 12 | 13 | buffer.putByte(message.moveType); 14 | buffer.putShortBE(message.fromSlot); 15 | buffer.putShortLE(message.toSlot); 16 | buffer.putIntME2(message.widgetId); 17 | 18 | return buffer; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/widget/container/DropWidgetItemMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.widget.container; 2 | 3 | import org.runejs.client.message.outbound.widget.container.DropWidgetItemOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | public class DropWidgetItemMessageEncoder implements MessageEncoder { 9 | @Override 10 | public PacketBuffer encode(DropWidgetItemOutboundMessage message) { 11 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(8, 29); 12 | 13 | buffer.putIntME1((message.widgetId << 16) | message.containerId); 14 | buffer.putShortBE(message.slot); 15 | buffer.putShortLE(message.itemId); 16 | 17 | return buffer; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/widget/input/ClickPleaseWaitWidgetMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.widget.input; 2 | 3 | import org.runejs.client.message.outbound.widget.input.ClickPleaseWaitWidgetOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | import org.runejs.client.scene.SceneCluster; 8 | 9 | public class ClickPleaseWaitWidgetMessageEncoder implements MessageEncoder { 10 | @Override 11 | public PacketBuffer encode(ClickPleaseWaitWidgetOutboundMessage message) { 12 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(6, 132); 13 | 14 | buffer.putIntME2((message.widgetId << 16) | message.childId); 15 | buffer.putShortLE(message.option); 16 | 17 | return buffer; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/widget/input/ClickWidgetButtonMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.widget.input; 2 | 3 | import org.runejs.client.message.outbound.widget.input.ClickWidgetButtonOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | public class ClickWidgetButtonMessageEncoder implements MessageEncoder { 9 | @Override 10 | public PacketBuffer encode(ClickWidgetButtonOutboundMessage message) { 11 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(4, 64); 12 | buffer.putIntBE((message.widgetId << 16) | message.childId); 13 | return buffer; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/widget/input/SubmitChatboxWidgetNameInputMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.widget.input; 2 | 3 | import org.runejs.client.message.outbound.widget.input.SubmitChatboxWidgetNameInputOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | public class SubmitChatboxWidgetNameInputMessageEncoder implements MessageEncoder { 9 | @Override 10 | public PacketBuffer encode(SubmitChatboxWidgetNameInputOutboundMessage message) { 11 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(8, 86); 12 | 13 | buffer.putLongBE(message.name); 14 | 15 | return buffer; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/widget/input/SubmitChatboxWidgetNumericInputMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.widget.input; 2 | 3 | import org.runejs.client.message.outbound.widget.input.SubmitChatboxWidgetNumericInputOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | public class SubmitChatboxWidgetNumericInputMessageEncoder implements MessageEncoder { 9 | @Override 10 | public PacketBuffer encode(SubmitChatboxWidgetNumericInputOutboundMessage message) { 11 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(4, 238); 12 | 13 | buffer.putIntBE(message.value); 14 | 15 | return buffer; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/net/codec/runejs435/encoder/widget/input/SubmitReportAbuseMessageEncoder.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.net.codec.runejs435.encoder.widget.input; 2 | 3 | import org.runejs.client.message.outbound.widget.input.SubmitReportAbuseOutboundMessage; 4 | import org.runejs.client.net.OutgoingPackets; 5 | import org.runejs.client.net.PacketBuffer; 6 | import org.runejs.client.net.codec.MessageEncoder; 7 | 8 | public class SubmitReportAbuseMessageEncoder implements MessageEncoder { 9 | @Override 10 | public PacketBuffer encode(SubmitReportAbuseOutboundMessage message) { 11 | PacketBuffer buffer = OutgoingPackets.openFixedSizePacket(10, 202); 12 | 13 | buffer.putLongBE(message.name); 14 | buffer.putByte(message.reason); 15 | buffer.putByte(message.mutePlayer ? 1 : 0); 16 | return null; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/node/CachedNode.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.node; 2 | 3 | public class CachedNode extends Node { 4 | 5 | public CachedNode nextCachedNode; 6 | public CachedNode previousCachedNode; 7 | 8 | public void clear() { 9 | if(previousCachedNode != null) { 10 | previousCachedNode.nextCachedNode = nextCachedNode; 11 | nextCachedNode.previousCachedNode = previousCachedNode; 12 | previousCachedNode = null; 13 | nextCachedNode = null; 14 | } 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/node/Node.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.node; 2 | 3 | public class Node { 4 | 5 | public long key; 6 | public Node next; 7 | public Node previous; 8 | 9 | public boolean hasPrevious() { 10 | return previous != null; 11 | } 12 | 13 | public void unlink() { 14 | if(previous != null) { 15 | previous.next = next; 16 | next.previous = previous; 17 | previous = null; 18 | next = null; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/ondemand/js5/exceptions/JS5CRCException.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.ondemand.js5.exceptions; 2 | 3 | public class JS5CRCException extends JS5Exception { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/ondemand/js5/exceptions/JS5ConnectException.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.ondemand.js5.exceptions; 2 | 3 | public class JS5ConnectException extends JS5Exception { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/ondemand/js5/exceptions/JS5ConnectFullException.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.ondemand.js5.exceptions; 2 | 3 | public class JS5ConnectFullException extends JS5Exception { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/ondemand/js5/exceptions/JS5ConnectOutOfDateException.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.ondemand.js5.exceptions; 2 | 3 | public class JS5ConnectOutOfDateException extends JS5Exception { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/ondemand/js5/exceptions/JS5Exception.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.ondemand.js5.exceptions; 2 | 3 | public class JS5Exception extends Exception { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/ondemand/js5/exceptions/JS5IOException.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.ondemand.js5.exceptions; 2 | 3 | public class JS5IOException extends JS5Exception { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/renderer/ScreenRenderer.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.renderer; 2 | 3 | import java.awt.*; 4 | 5 | public abstract class ScreenRenderer { 6 | 7 | public abstract void drawLoadingText(int percent, Color color, String desc); 8 | 9 | public abstract void disposeLoadingText(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/scene/GroundItemTile.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.scene; 2 | 3 | import org.runejs.client.media.renderable.Renderable; 4 | 5 | public class GroundItemTile { 6 | public Renderable firstGroundItem; 7 | public int y; 8 | public int z; 9 | public Renderable secondGroundItem; 10 | public Renderable thirdGroundItem; 11 | public int hash; 12 | public int anInt1371; 13 | public int x; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/scene/InteractiveObject.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.scene; 2 | 3 | import org.runejs.client.media.renderable.Renderable; 4 | 5 | public class InteractiveObject { 6 | public int z; 7 | public int hash; 8 | public int config = 0; 9 | public int worldY; 10 | public int tileLeft; 11 | public Renderable renderable; 12 | public int worldX; 13 | public int tileBottom; 14 | public int worldZ; 15 | public int rotation; 16 | public int tileTop; 17 | public int tileRight; 18 | public int cycle; 19 | public int anInt491; 20 | 21 | public InteractiveObject() { 22 | hash = 0; 23 | } 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/scene/Point2d.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.scene; 2 | 3 | public class Point2d { 4 | public final int x; 5 | public final int y; 6 | 7 | public Point2d(int x, int y) { 8 | this.x = x; 9 | this.y = y; 10 | } 11 | 12 | public Point2d add(Point2d other) { 13 | return new Point2d(x + other.x, y + other.y); 14 | } 15 | 16 | public Point2d addX(int x) { 17 | return new Point2d(this.x + x, this.y ); 18 | } 19 | 20 | public Point2d addY(int y) { 21 | return new Point2d(this.x, this.y + y ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/scene/SceneCluster.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.scene; 2 | 3 | public class SceneCluster { 4 | public int worldDistanceFromCameraStartX; 5 | public int worldDistanceFromCameraEndY; 6 | public int tileStartY; 7 | public int tileEndY; 8 | public int worldEndX; 9 | public int tileDistanceEnum; 10 | public int worldDistanceFromCameraStartZ; 11 | public int worldStartY; 12 | public int worldDistanceFromCameraStartY; 13 | public int worldStartX; 14 | public int searchMask; 15 | public int tileStartX; 16 | public int worldEndY; 17 | public int worldStartZ; 18 | public int worldDistanceFromCameraEndZ; 19 | public int tileEndX; 20 | public int worldEndZ; 21 | public int worldDistanceFromCameraEndX; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/scene/camera/Camera.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.scene.camera; 2 | 3 | import org.runejs.client.scene.Point3d; 4 | 5 | public interface Camera { 6 | CameraRotation getRotation(); 7 | Point3d getPosition(); 8 | 9 | void setOffsetPosition(Point3d offsetPosition); 10 | void setOffsetRotation(CameraRotation offsetPosition); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/scene/camera/CameraAdjustmentSpeed.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.scene.camera; 2 | 3 | /** 4 | * Represents the speed at which the camera turns or moves. 5 | */ 6 | public class CameraAdjustmentSpeed { 7 | /** 8 | * The base step movement value 9 | */ 10 | public final int base; 11 | 12 | /** 13 | * The scaling step movement value 14 | * 15 | * Multiplies the difference between the current and target position. 16 | */ 17 | public final int scale; 18 | 19 | public CameraAdjustmentSpeed(int base, int scale) { 20 | this.base = base; 21 | this.scale = scale; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/scene/tile/FloorDecoration.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.scene.tile; 2 | 3 | import org.runejs.client.media.renderable.Renderable; 4 | 5 | public class FloorDecoration { 6 | public int config; 7 | public int hash; 8 | public int x; 9 | public Renderable renderable; 10 | public int y; 11 | public int z; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/scene/tile/GenericTile.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.scene.tile; 2 | 3 | public class GenericTile { 4 | public int texture; 5 | public int colourSE; 6 | public int rgbColor; 7 | public boolean flat; 8 | public int colourSW; 9 | public int colourNW; 10 | public int colourNE; 11 | 12 | public GenericTile(int colourSW, int colourSE, int colourNW, int colourNE, int texture, int rgbColor, boolean flat) { 13 | this.colourSW = colourSW; 14 | this.colourSE = colourSE; 15 | this.colourNW = colourNW; 16 | this.colourNE = colourNE; 17 | this.texture = texture; 18 | this.rgbColor = rgbColor; 19 | this.flat = flat; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/scene/tile/Wall.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.scene.tile; 2 | 3 | import org.runejs.client.media.renderable.Renderable; 4 | 5 | public class Wall { 6 | public int hash; 7 | public int x; 8 | public int y; 9 | public int z; 10 | public int orientationA; 11 | public int orientationB; 12 | public Renderable secondary; 13 | public Renderable primary; 14 | public int config = 0; 15 | 16 | public Wall() { 17 | hash = 0; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/scene/tile/WallDecoration.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.scene.tile; 2 | 3 | import org.runejs.client.media.renderable.Renderable; 4 | 5 | public class WallDecoration { 6 | 7 | public int configBits; 8 | public int z; 9 | public Renderable renderable; 10 | public int face; 11 | public int config = 0; 12 | public int y; 13 | public int x; 14 | public int hash = 0; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/sound/AbstractSound.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.sound; 2 | 3 | import org.runejs.client.node.Node; 4 | 5 | public abstract class AbstractSound extends Node { 6 | public int position; 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/sound/PcmStream.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.sound; 2 | 3 | import org.runejs.client.node.Node; 4 | 5 | public abstract class PcmStream extends Node { 6 | public boolean active; 7 | public AbstractSound sound; 8 | 9 | public abstract void skip(int i); 10 | 11 | public abstract int fill(int[] is, int i, int i_0_); 12 | 13 | public int method845() { 14 | return 255; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/sound/PcmStreamMixerListener.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.sound; 2 | 3 | import org.runejs.client.node.Node; 4 | 5 | public abstract class PcmStreamMixerListener extends Node { 6 | public int anInt2133; 7 | 8 | public abstract void remove2(); 9 | 10 | public abstract int update(PcmStreamMixer class40_sub9_sub1); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/sound/RawSound.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.sound; 2 | 3 | public class RawSound extends AbstractSound { 4 | public byte[] samples; 5 | public int start; 6 | public int end; 7 | public int sampleRate; 8 | 9 | public RawSound(int sampleRate, byte[] samples, int start, int end) { 10 | this.sampleRate = sampleRate; 11 | this.samples = samples; 12 | this.start = start; 13 | this.end = end; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/util/BitUtils.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.util; 2 | 3 | public class BitUtils { 4 | public static int bitWiseOR(int arg0, int arg1) { 5 | return arg0 | arg1; 6 | } 7 | 8 | public static int bitWiseAND(int arg0, int arg1) { 9 | return arg0 & arg1; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/util/RSAConfiguration.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.util; 2 | 3 | import java.math.BigInteger; 4 | 5 | public class RSAConfiguration { 6 | public final BigInteger modulus; 7 | 8 | public final BigInteger publicKey; 9 | 10 | public RSAConfiguration(BigInteger modulus, BigInteger publicKey) { 11 | this.modulus = modulus; 12 | this.publicKey = publicKey; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/runejs/client/util/Timer.java: -------------------------------------------------------------------------------- 1 | package org.runejs.client.util; 2 | 3 | public abstract class Timer { 4 | public abstract int getTicks(int i, int i_0_); 5 | 6 | public abstract void start(); 7 | 8 | public abstract void reset(); 9 | 10 | public static Timer create() { 11 | try { 12 | return (Timer) Class.forName("org.runejs.client.util.NanoTimer").newInstance(); 13 | } catch(Throwable throwable) { 14 | return new MillisTimer(); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/resources/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runejs/refactored-client-435/00f0ec2b6c24ccdc3695145077591cc3d9c57388/src/main/resources/logo.png --------------------------------------------------------------------------------