Conversation
I think 3.2 might work too, since that is required for geometry shaders. But the shaders have had #version 330 for a long time, so stick with that.
[ci skip]
# Conflicts: # cache/pom.xml # pom.xml # runelite-api/pom.xml # runelite-client/pom.xml # runelite-jshell/pom.xml # runelite-maven-plugin/pom.xml
uploadStaticModel can be called from the client or map loader thread, so it each needs its own vertex buffer
NPCs which have tags in their names have those tags included in the server npc loot event. This commit strips those tags before adding loot records and sending npc kill chat messages.
[ci skip]
# Conflicts: # cache/pom.xml # pom.xml # runelite-api/pom.xml # runelite-client/pom.xml # runelite-jshell/pom.xml # runelite-maven-plugin/pom.xml
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the WalkthroughThis pull request updates the Maven parent version from 1.12.0 to 1.12.2 across multiple modules, bumps the Microbot version from 2.0.37 to 2.0.38, and introduces extensive content additions. Primary additions include a new Sailing skill integrated throughout the API and client with corresponding configurations, varbits, and interface elements. The PR also adds a DBTABLE script variable type, numerous NPC IDs, item IDs, object IDs, animation constants, and quest entries. Significant refactoring occurs in the GPU plugin with updated method signatures for rendering calls and camera zoom handling via new VarClientID constants. Multiple game interface field indices are incremented, and builder scripts are updated or removed to support the new content and infrastructure changes. Possibly related PRs
Pre-merge checks and finishing touches❌ Failed checks (2 inconclusive)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
runelite-client/src/main/scripts/OptionsPanelZoomUpdater.rs2asm (1)
69-76: Wrong range used for fixed-viewport zoom conversionThe fixed-viewport branch subtracts the small-mode minimum (VarClientID 1338) but still pushes
iload 0(the big-mode range) intozoomExpToLin, then later divides byiload 1. That mismatch skews the conversion and sets the slider to the wrong position whenever the fixed viewport limits differ from the resizable ones. Load the small-mode range before invoking the callback so both operands stay in sync.- iload 0 + iload 1runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java (1)
604-627: Wire SAILING into fromSkill lookup.
TRAINING_SAILING is never surfaced because Skill.SAILING still hits the default null return, unlike every other skill. Add the missing branch so Discord presence updates correctly for the new sailing skill.case CONSTRUCTION: return TRAINING_CONSTRUCTION; + case SAILING: return TRAINING_SAILING; default: return null;
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (3)
runelite-client/src/main/resources/net/runelite/client/plugins/gpu/frag.glslis excluded by!**/*.glslrunelite-client/src/main/resources/skill_icons/sailing.pngis excluded by!**/*.pngrunelite-client/src/main/resources/skill_icons_small/sailing.pngis excluded by!**/*.png
📒 Files selected for processing (74)
cache/pom.xml(1 hunks)cache/src/main/java/net/runelite/cache/util/ScriptVarType.java(1 hunks)pom.xml(1 hunks)runelite-api/pom.xml(1 hunks)runelite-api/src/main/interfaces/interfaces.toml(2 hunks)runelite-api/src/main/java/net/runelite/api/Actor.java(1 hunks)runelite-api/src/main/java/net/runelite/api/ItemID.java(8 hunks)runelite-api/src/main/java/net/runelite/api/NpcID.java(3 hunks)runelite-api/src/main/java/net/runelite/api/NullItemID.java(2 hunks)runelite-api/src/main/java/net/runelite/api/NullNpcID.java(4 hunks)runelite-api/src/main/java/net/runelite/api/NullObjectID.java(3 hunks)runelite-api/src/main/java/net/runelite/api/ObjectID.java(10 hunks)runelite-api/src/main/java/net/runelite/api/Quest.java(1 hunks)runelite-api/src/main/java/net/runelite/api/Renderable.java(1 hunks)runelite-api/src/main/java/net/runelite/api/ScriptID.java(1 hunks)runelite-api/src/main/java/net/runelite/api/Skill.java(1 hunks)runelite-api/src/main/java/net/runelite/api/gameval/AnimationID.java(2 hunks)runelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.java(19 hunks)runelite-api/src/main/java/net/runelite/api/gameval/InventoryID.java(1 hunks)runelite-api/src/main/java/net/runelite/api/gameval/ObjectID.java(7 hunks)runelite-api/src/main/java/net/runelite/api/gameval/SpotanimID.java(1 hunks)runelite-api/src/main/java/net/runelite/api/gameval/SpriteID.java(9 hunks)runelite-api/src/main/java/net/runelite/api/gameval/VarClientID.java(1 hunks)runelite-api/src/main/java/net/runelite/api/gameval/VarPlayerID.java(1 hunks)runelite-api/src/main/java/net/runelite/api/gameval/VarbitID.java(3 hunks)runelite-api/src/main/java/net/runelite/api/hooks/DrawCallbacks.java(1 hunks)runelite-client/pom.xml(2 hunks)runelite-client/src/main/java/net/runelite/client/plugins/bank/BankPlugin.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/camera/CameraPlugin.java(7 hunks)runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/gpu/FacePrioritySorter.java(2 hunks)runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java(20 hunks)runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPluginConfig.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/gpu/SceneUploader.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/gpu/Shader.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/gpu/TextureManager.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/gpu/VAO.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/gpu/VBO.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/gpu/Zone.java(3 hunks)runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/timersandbuffs/TimersAndBuffsPlugin.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/virtuallevels/VirtualLevelsPlugin.java(1 hunks)runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java(2 hunks)runelite-client/src/main/java/net/runelite/client/ui/SkillColor.java(1 hunks)runelite-client/src/main/java/net/runelite/client/ui/overlay/outline/ModelOutlineRenderer.java(7 hunks)runelite-client/src/main/resources/item_variations.json(20 hunks)runelite-client/src/main/scripts/BankMainBuild.hash(1 hunks)runelite-client/src/main/scripts/BankMainBuild.rs2asm(24 hunks)runelite-client/src/main/scripts/BankSearchFilter.hash(1 hunks)runelite-client/src/main/scripts/BankSearchFilter.rs2asm(1 hunks)runelite-client/src/main/scripts/NewOptionsPanelZoomListener.hash(0 hunks)runelite-client/src/main/scripts/NewOptionsPanelZoomListener.rs2asm(0 hunks)runelite-client/src/main/scripts/NewOptionsPanelZoomSetter.hash(0 hunks)runelite-client/src/main/scripts/NewOptionsPanelZoomSetter.rs2asm(0 hunks)runelite-client/src/main/scripts/NewOptionsPanelZoomSlider.hash(0 hunks)runelite-client/src/main/scripts/NewOptionsPanelZoomSlider.rs2asm(0 hunks)runelite-client/src/main/scripts/OptionsPanelRebuilder.hash(0 hunks)runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm(0 hunks)runelite-client/src/main/scripts/OptionsPanelZoomMouseListener.hash(1 hunks)runelite-client/src/main/scripts/OptionsPanelZoomMouseListener.rs2asm(3 hunks)runelite-client/src/main/scripts/OptionsPanelZoomUpdater.hash(1 hunks)runelite-client/src/main/scripts/OptionsPanelZoomUpdater.rs2asm(4 hunks)runelite-client/src/main/scripts/SkillTabBuilder.hash(1 hunks)runelite-client/src/main/scripts/SkillTabBuilder.rs2asm(3 hunks)runelite-client/src/main/scripts/SkillTabTotalLevel.hash(1 hunks)runelite-client/src/main/scripts/SkillTabTotalLevel.rs2asm(6 hunks)runelite-client/src/main/scripts/ZoomHandler.hash(0 hunks)runelite-client/src/main/scripts/ZoomHandler.rs2asm(0 hunks)runelite-client/src/test/java/net/runelite/client/plugins/timersandbuffs/TimersAndBuffsPluginTest.java(0 hunks)runelite-jshell/pom.xml(1 hunks)runelite-maven-plugin/pom.xml(1 hunks)
💤 Files with no reviewable changes (11)
- runelite-client/src/main/scripts/NewOptionsPanelZoomSetter.hash
- runelite-client/src/main/scripts/OptionsPanelRebuilder.hash
- runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm
- runelite-client/src/main/scripts/NewOptionsPanelZoomSlider.hash
- runelite-client/src/test/java/net/runelite/client/plugins/timersandbuffs/TimersAndBuffsPluginTest.java
- runelite-client/src/main/scripts/NewOptionsPanelZoomSlider.rs2asm
- runelite-client/src/main/scripts/ZoomHandler.rs2asm
- runelite-client/src/main/scripts/ZoomHandler.hash
- runelite-client/src/main/scripts/NewOptionsPanelZoomListener.hash
- runelite-client/src/main/scripts/NewOptionsPanelZoomListener.rs2asm
- runelite-client/src/main/scripts/NewOptionsPanelZoomSetter.rs2asm
🧰 Additional context used
📓 Path-based instructions (2)
**/*.java
📄 CodeRabbit inference engine (AGENTS.md)
**/*.java: Use tabs for indentation, follow the brace placement style exemplified in MicrobotPlugin.java, and keep lines under 120 characters
Use UpperCamelCase for types and lowerCamelCase for members
Files:
runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.javarunelite-client/src/main/java/net/runelite/client/plugins/bank/BankPlugin.javacache/src/main/java/net/runelite/cache/util/ScriptVarType.javarunelite-api/src/main/java/net/runelite/api/ScriptID.javarunelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.javarunelite-api/src/main/java/net/runelite/api/hooks/DrawCallbacks.javarunelite-api/src/main/java/net/runelite/api/gameval/AnimationID.javarunelite-api/src/main/java/net/runelite/api/ItemID.javarunelite-client/src/main/java/net/runelite/client/plugins/timersandbuffs/TimersAndBuffsPlugin.javarunelite-api/src/main/java/net/runelite/api/gameval/VarbitID.javarunelite-api/src/main/java/net/runelite/api/Quest.javarunelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.javarunelite-api/src/main/java/net/runelite/api/Skill.javarunelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.javarunelite-client/src/main/java/net/runelite/client/plugins/gpu/Zone.javarunelite-client/src/main/java/net/runelite/client/plugins/gpu/VAO.javarunelite-api/src/main/java/net/runelite/api/ObjectID.javarunelite-client/src/main/java/net/runelite/client/plugins/gpu/SceneUploader.javarunelite-api/src/main/java/net/runelite/api/NullObjectID.javarunelite-client/src/main/java/net/runelite/client/plugins/gpu/Shader.javarunelite-api/src/main/java/net/runelite/api/Renderable.javarunelite-client/src/main/java/net/runelite/client/plugins/gpu/TextureManager.javarunelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.javarunelite-client/src/main/java/net/runelite/client/plugins/camera/CameraPlugin.javarunelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.javarunelite-api/src/main/java/net/runelite/api/NullNpcID.javarunelite-client/src/main/java/net/runelite/client/ui/overlay/outline/ModelOutlineRenderer.javarunelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.javarunelite-api/src/main/java/net/runelite/api/Actor.javarunelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPluginConfig.javarunelite-client/src/main/java/net/runelite/client/plugins/virtuallevels/VirtualLevelsPlugin.javarunelite-client/src/main/java/net/runelite/client/plugins/gpu/VBO.javarunelite-client/src/main/java/net/runelite/client/ui/SkillColor.javarunelite-api/src/main/java/net/runelite/api/gameval/ObjectID.javarunelite-client/src/main/java/net/runelite/client/plugins/gpu/FacePrioritySorter.javarunelite-api/src/main/java/net/runelite/api/gameval/InventoryID.javarunelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.javarunelite-api/src/main/java/net/runelite/api/gameval/SpriteID.javarunelite-api/src/main/java/net/runelite/api/NpcID.javarunelite-api/src/main/java/net/runelite/api/gameval/VarClientID.javarunelite-api/src/main/java/net/runelite/api/gameval/SpotanimID.javarunelite-api/src/main/java/net/runelite/api/NullItemID.javarunelite-api/src/main/java/net/runelite/api/gameval/VarPlayerID.java
**/pom.xml
📄 CodeRabbit inference engine (AGENTS.md)
Target Java 11 via maven-compiler-plugin using 11 in all module POMs
Files:
runelite-api/pom.xmlcache/pom.xmlrunelite-maven-plugin/pom.xmlrunelite-jshell/pom.xmlpom.xmlrunelite-client/pom.xml
🧠 Learnings (13)
📚 Learning: 2025-08-25T06:50:43.493Z
Learnt from: Voxsylvae
Repo: chsami/Microbot PR: 1415
File: runelite-client/src/main/java/net/runelite/client/plugins/microbot/agility/MicroAgilityPrePostScheduleRequirements.java:218-226
Timestamp: 2025-08-25T06:50:43.493Z
Learning: In MicroAgilityPrePostScheduleRequirements.java, the deprecated ItemID constants NATURERUNE and FIRERUNE should be replaced with NATURE_RUNE and FIRE_RUNE respectively when using the gameval package ItemID class.
Applied to files:
runelite-api/src/main/java/net/runelite/api/gameval/AnimationID.javarunelite-api/src/main/java/net/runelite/api/ItemID.javarunelite-api/src/main/java/net/runelite/api/gameval/VarbitID.javarunelite-api/src/main/java/net/runelite/api/ObjectID.javarunelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.javarunelite-api/src/main/java/net/runelite/api/NullNpcID.javarunelite-api/src/main/java/net/runelite/api/gameval/ObjectID.javarunelite-api/src/main/java/net/runelite/api/gameval/InventoryID.javarunelite-api/src/main/java/net/runelite/api/gameval/SpriteID.javarunelite-api/src/main/java/net/runelite/api/NpcID.javarunelite-api/src/main/java/net/runelite/api/gameval/VarClientID.javarunelite-api/src/main/java/net/runelite/api/gameval/SpotanimID.javarunelite-api/src/main/java/net/runelite/api/NullItemID.javarunelite-api/src/main/java/net/runelite/api/gameval/VarPlayerID.java
📚 Learning: 2025-08-25T15:51:39.272Z
Learnt from: runsonmypc
Repo: chsami/Microbot PR: 1417
File: runelite-client/src/main/java/net/runelite/client/plugins/microbot/agility/AgilityScript.java:13-13
Timestamp: 2025-08-25T15:51:39.272Z
Learning: Both net.runelite.api.ItemID and net.runelite.api.gameval.ItemID are valid import paths in the RuneLite codebase. The microbot plugins consistently use net.runelite.api.ItemID as their established pattern.
Applied to files:
runelite-api/src/main/java/net/runelite/api/ItemID.javarunelite-api/src/main/java/net/runelite/api/ObjectID.javarunelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.javarunelite-api/src/main/java/net/runelite/api/gameval/ObjectID.javarunelite-api/src/main/java/net/runelite/api/gameval/InventoryID.java
📚 Learning: 2025-08-25T15:51:52.157Z
Learnt from: runsonmypc
Repo: chsami/Microbot PR: 1417
File: runelite-client/src/main/java/net/runelite/client/plugins/microbot/agility/AgilityScript.java:284-291
Timestamp: 2025-08-25T15:51:52.157Z
Learning: In RuneLite's ItemID class, both PIEDISH and PIE_DISH constants exist and are valid, both referring to item ID 2313. The gameval package uses PIEDISH while the regular api package uses PIE_DISH, so either naming convention can be used.
Applied to files:
runelite-api/src/main/java/net/runelite/api/ItemID.javarunelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.javarunelite-api/src/main/java/net/runelite/api/gameval/InventoryID.java
📚 Learning: 2025-08-25T06:45:09.673Z
Learnt from: Voxsylvae
Repo: chsami/Microbot PR: 1415
File: runelite-client/src/main/java/net/runelite/client/plugins/microbot/agility/MicroAgilityPrePostScheduleRequirements.java:7-7
Timestamp: 2025-08-25T06:45:09.673Z
Learning: Always use game ID classes from net.runelite.api.gameval package (like ItemID, ObjectID, NpcID) instead of the deprecated classes in net.runelite.api package. The gameval package contains the new, preferred classes while the old ones in the direct api package are deprecated.
Applied to files:
runelite-api/src/main/java/net/runelite/api/ItemID.javarunelite-api/src/main/java/net/runelite/api/ObjectID.javarunelite-api/src/main/java/net/runelite/api/NullObjectID.javarunelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.javarunelite-api/src/main/java/net/runelite/api/NullNpcID.javarunelite-api/src/main/java/net/runelite/api/gameval/ObjectID.javarunelite-api/src/main/java/net/runelite/api/gameval/InventoryID.javarunelite-api/src/main/java/net/runelite/api/gameval/SpriteID.javarunelite-api/src/main/java/net/runelite/api/gameval/VarClientID.javarunelite-api/src/main/java/net/runelite/api/NullItemID.javarunelite-api/src/main/java/net/runelite/api/gameval/VarPlayerID.java
📚 Learning: 2025-10-16T17:14:29.778Z
Learnt from: CR
Repo: chsami/Microbot PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-16T17:14:29.778Z
Learning: Applies to runelite-client/src/test/java/**/*.java : Mirror production package structure for tests under runelite-client/src/test/java
Applied to files:
runelite-api/pom.xmlrunelite-client/pom.xml
📚 Learning: 2025-10-16T17:14:29.778Z
Learnt from: CR
Repo: chsami/Microbot PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-16T17:14:29.778Z
Learning: Applies to runelite-client/target/*.jar : Distributable JARs should be produced in runelite-client/target/
Applied to files:
runelite-api/pom.xmlrunelite-maven-plugin/pom.xmlrunelite-jshell/pom.xmlrunelite-client/pom.xml
📚 Learning: 2025-10-16T17:14:29.778Z
Learnt from: CR
Repo: chsami/Microbot PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-16T17:14:29.778Z
Learning: Applies to runelite-client/src/test/java/**/*.java : Write JUnit 4 tests (junit:4.12) under matching package paths
Applied to files:
runelite-api/pom.xmlrunelite-client/pom.xml
📚 Learning: 2025-10-16T17:14:29.778Z
Learnt from: CR
Repo: chsami/Microbot PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-16T17:14:29.778Z
Learning: Applies to runelite-client/src/main/java/net/runelite/client/plugins/microbot/**/*.java : Place all gameplay automation code under runelite-client/src/main/java/net/runelite/client/plugins/microbot
Applied to files:
runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.javarunelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.javarunelite-client/pom.xml
📚 Learning: 2025-10-16T17:14:29.778Z
Learnt from: CR
Repo: chsami/Microbot PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-16T17:14:29.778Z
Learning: Applies to runelite-client/src/main/java/net/runelite/client/plugins/microbot/**/*.java : Prefix configuration interfaces with the plugin name (e.g., ExampleConfig) within microbot plugins
Applied to files:
runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.javarunelite-client/src/main/java/net/runelite/client/plugins/virtuallevels/VirtualLevelsPlugin.java
📚 Learning: 2025-10-16T17:14:29.778Z
Learnt from: CR
Repo: chsami/Microbot PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-16T17:14:29.778Z
Learning: Applies to **/pom.xml : Target Java 11 via maven-compiler-plugin using <release>11</release> in all module POMs
Applied to files:
runelite-maven-plugin/pom.xmlpom.xml
📚 Learning: 2025-10-16T17:14:29.778Z
Learnt from: CR
Repo: chsami/Microbot PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-16T17:14:29.778Z
Learning: Applies to runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotPlugin.java : When adding panel controls or overlays, update the Microbot navigation panel setup in MicrobotPlugin and provide default config values
Applied to files:
runelite-client/src/main/java/net/runelite/client/plugins/camera/CameraPlugin.java
📚 Learning: 2025-10-16T17:14:29.778Z
Learnt from: CR
Repo: chsami/Microbot PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-16T17:14:29.778Z
Learning: Applies to runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/**/*.java : Put shared helpers under .../microbot/util
Applied to files:
runelite-client/pom.xml
📚 Learning: 2025-08-31T19:19:07.691Z
Learnt from: chsami
Repo: chsami/Microbot PR: 1455
File: runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotVersionChecker.java:112-132
Timestamp: 2025-08-31T19:19:07.691Z
Learning: The Microbot project uses only numeric versioning (e.g., "1.2.3") without any alphanumeric suffixes like "-beta" or "-alpha", so simple integer parsing of version segments is safe.
Applied to files:
runelite-client/pom.xml
🧬 Code graph analysis (3)
runelite-client/src/main/java/net/runelite/client/plugins/camera/CameraPlugin.java (1)
runelite-api/src/main/java/net/runelite/api/ScriptID.java (1)
ScriptID(27-500)
runelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.java (1)
runelite-api/src/main/java/net/runelite/api/gameval/DBTableID.java (1)
SailingCrew(13346-13398)
runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java (1)
runelite-client/src/main/java/net/runelite/client/plugins/gpu/VAO.java (1)
VAO(37-137)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build
🔇 Additional comments (13)
runelite-client/src/main/scripts/OptionsPanelZoomMouseListener.hash (1)
1-1: No issues detected.Hash update is consistent with the zoom listener script changes reflected in the PR.
runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java (1)
751-751: LGTM!Sanitizing the NPC name by removing formatting tags is consistent with the pattern used elsewhere in the codebase (e.g., line 1241 for pickpocket targets). This ensures cleaner loot record data and more reliable name-based lookups.
runelite-api/src/main/java/net/runelite/api/hooks/DrawCallbacks.java (1)
159-161: LGTM! Signature now consistent with drawDynamic.The addition of
orient, x, y, zparameters alignsdrawTempwith the existingdrawDynamicmethod signature pattern (line 155), improving API consistency.runelite-api/src/main/java/net/runelite/api/ObjectID.java (1)
1729-29254: LGTM! All constant declarations follow the established pattern.All new ObjectID constants are properly formatted with unique ID values in ascending order, consistent naming conventions, and adherence to coding guidelines.
runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java (1)
229-230: LGTM!The two new spinning wheel animation variants are handled consistently with all other skilling animations, properly falling through to the shared
resetTimers()logic.runelite-api/src/main/interfaces/interfaces.toml (1)
234-250: No changes are visible from this branch's perspective, so I cannot verify the offset pattern claim through automated inspection. Manual verification is needed to confirm that the offset differences between sections are intentional.runelite-api/src/main/java/net/runelite/api/gameval/VarbitID.java (3)
5935-5935: LGTM!The constant addition follows proper naming conventions and fits logically in the sequence.
6124-6124: LGTM!The constant properly introduces the first sailing crew member flag, following naming conventions and fitting logically in the sequence.
12500-13839: LGTM! Extensive but well-organized sailing system constants.The large addition of sailing-related constants follows consistent naming conventions and logical patterns throughout. The constants are properly grouped by functionality (charting, boats, crew, facilities) and values increment sequentially without conflicts.
runelite-client/src/main/java/net/runelite/client/plugins/camera/CameraPlugin.java (1)
86-89: Logic looks consistent.The zoom limit management implementation appears correct. The flow of fetching default values from the client, applying config-based adjustments, and responding to script events is logically sound.
Also applies to: 147-147, 180-180, 202-221, 266-273, 290-290, 433-433
runelite-api/src/main/java/net/runelite/api/NullObjectID.java (1)
1206-1212: LGTM!All constant additions follow the correct pattern with values matching their identifiers, proper indentation with tabs, and numeric ordering. No inconsistencies detected.
Also applies to: 27267-27275, 29862-31269
runelite-api/src/main/java/net/runelite/api/NpcID.java (1)
12456-12456: Duplicate constant name causes a compile-time error.
GULLIVERis defined twice with different IDs (14932 and 15059). Java forbids duplicate field names; this won’t compile. Align with the existing suffix pattern.Apply this diff to fix:
- public static final int GULLIVER = 15059; + public static final int GULLIVER_15059 = 15059;Also applies to: 12552-12552
⛔ Skipped due to learnings
Learnt from: Voxsylvae Repo: chsami/Microbot PR: 1415 File: runelite-client/src/main/java/net/runelite/client/plugins/microbot/agility/MicroAgilityPrePostScheduleRequirements.java:218-226 Timestamp: 2025-08-25T06:50:43.493Z Learning: In MicroAgilityPrePostScheduleRequirements.java, the deprecated ItemID constants NATURERUNE and FIRERUNE should be replaced with NATURE_RUNE and FIRE_RUNE respectively when using the gameval package ItemID class.Learnt from: Voxsylvae Repo: chsami/Microbot PR: 1415 File: runelite-client/src/main/java/net/runelite/client/plugins/microbot/agility/MicroAgilityPrePostScheduleRequirements.java:7-7 Timestamp: 2025-08-25T06:45:09.673Z Learning: Always use game ID classes from net.runelite.api.gameval package (like ItemID, ObjectID, NpcID) instead of the deprecated classes in net.runelite.api package. The gameval package contains the new, preferred classes while the old ones in the direct api package are deprecated.runelite-api/src/main/java/net/runelite/api/NullItemID.java (1)
12192-12192: LGTM - Auto-generated constants are consistent.The additions follow a consistent pattern with constant names matching their values. Since this is an auto-generated file, the declarations are correct.
Also applies to: 16124-16679
| * Stalactite | ||
| */ | ||
| public static final int DRAGON_SLAYER_QIP_STAGAMITE = 25083; |
There was a problem hiding this comment.
Inconsistency between constant name and comment.
The constant name DRAGON_SLAYER_QIP_STAGAMITE suggests a stalagmite (grows from the ground), but the comment now says "Stalactite" (hangs from the ceiling). These are geological opposites, so either the constant name or the comment should be corrected to match the actual in-game object.
| int itemId = wItem.getItemId(); | ||
| // Doses: 1234 or Quantity: 1234 | ||
| int doses = Integer.parseInt(wDoses.getText().split(": ")[1]); | ||
| int doses = Integer.parseInt(wDoses.getText().split(": ")[1].replace(",", "")); |
There was a problem hiding this comment.
Inconsistent error handling compared to similar parsing operations.
Other quantity parsing in this file (lines 526-533, 554-563) uses try-catch blocks to handle ParseException, but this direct Integer.parseInt() call lacks error handling. Additionally, the split(": ")[1] assumes the array has at least 2 elements without validation. If the widget text format is unexpected, this will throw an uncaught exception.
Apply this diff to add consistent error handling:
- int doses = Integer.parseInt(wDoses.getText().split(": ")[1].replace(",", ""));
+ String[] parts = wDoses.getText().split(": ");
+ if (parts.length < 2)
+ {
+ log.warn("Unexpected potion dose text format: {}", wDoses.getText());
+ continue;
+ }
+
+ int doses;
+ try
+ {
+ doses = Integer.parseInt(parts[1].replace(",", ""));
+ }
+ catch (NumberFormatException e)
+ {
+ log.warn("Failed to parse potion doses from: {}", parts[1], e);
+ continue;
+ }📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| int doses = Integer.parseInt(wDoses.getText().split(": ")[1].replace(",", "")); | |
| String[] parts = wDoses.getText().split(": "); | |
| if (parts.length < 2) | |
| { | |
| log.warn("Unexpected potion dose text format: {}", wDoses.getText()); | |
| continue; | |
| } | |
| int doses; | |
| try | |
| { | |
| doses = Integer.parseInt(parts[1].replace(",", "")); | |
| } | |
| catch (NumberFormatException e) | |
| { | |
| log.warn("Failed to parse potion doses from: {}", parts[1], e); | |
| continue; | |
| } |
🤖 Prompt for AI Agents
In
runelite-client/src/main/java/net/runelite/client/plugins/bank/BankPlugin.java
around line 705, the direct call to Integer.parseInt on
wDoses.getText().split(": ")[1] lacks the same defensive parsing used elsewhere;
wrap this extraction and parsing in a try-catch like the other blocks, first
validate that split(": ") yields at least 2 elements, trim and remove commas
from the token, attempt Integer.parseInt, and on NumberFormatException or
ArrayIndexOutOfBoundsException set doses to a safe default (e.g., 0) and
log/debug the failure so the plugin doesn't throw on unexpected widget text.
Ensure the new code mirrors the error handling style used in lines 526-533 and
554-563.
| @ConfigItem( | ||
| keyName = "smoothBanding", | ||
| name = "Remove color banding", | ||
| description = "Smooths out the color banding that is present in the CPU renderer.", | ||
| position = 2 | ||
| ) | ||
| default boolean smoothBanding() | ||
| { | ||
| return true; | ||
| } |
There was a problem hiding this comment.
Duplicate position value creates ambiguous UI ordering.
The new smoothBanding config item uses position = 2, but hideUnrelatedMaps (line 60) already occupies that position. Additionally, both drawDistance (line 49) and expandedMapLoadingZones (line 74) share position = 1. These collisions will cause unpredictable ordering in the configuration UI.
Assign a unique position value to resolve the conflict. Consider using position = 6 (currently unused):
@ConfigItem(
keyName = "smoothBanding",
name = "Remove color banding",
description = "Smooths out the color banding that is present in the CPU renderer.",
- position = 2
+ position = 6
)
default boolean smoothBanding()
{
return true;
}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| @ConfigItem( | |
| keyName = "smoothBanding", | |
| name = "Remove color banding", | |
| description = "Smooths out the color banding that is present in the CPU renderer.", | |
| position = 2 | |
| ) | |
| default boolean smoothBanding() | |
| { | |
| return true; | |
| } | |
| @ConfigItem( | |
| keyName = "smoothBanding", | |
| name = "Remove color banding", | |
| description = "Smooths out the color banding that is present in the CPU renderer.", | |
| position = 6 | |
| ) | |
| default boolean smoothBanding() | |
| { | |
| return true; | |
| } |
🤖 Prompt for AI Agents
In
runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPluginConfig.java
around lines 81 to 90, the new ConfigItem smoothBanding() uses position = 2
which conflicts with hideUnrelatedMaps at line 60 and there are other
collisions: drawDistance (line 49) and expandedMapLoadingZones (line 74) both
use position = 1; change smoothBanding() to use a unique unused position
(suggest position = 6) so all ConfigItem position values are distinct and UI
ordering is deterministic.
| iload 0 | ||
| iconst -1 | ||
| if_icmpne LABEL19 | ||
| jump LABEL23 | ||
| LABEL19: | ||
| if_icmpne LABEL21 | ||
| jump LABEL25 | ||
| LABEL21: |
There was a problem hiding this comment.
Redundant item id check - unreachable code path.
At LABEL17, the check for item id == -1 (lines 40-44) is redundant. The only way to reach LABEL17 is through LABEL6→LABEL12→LABEL17, and at LABEL6 (lines 26-29) we already verified that item id != -1 (otherwise we would have returned 0 at LABEL10). This means the conditional at line 42 will always jump to LABEL21, making the jump to LABEL25 at line 43 unreachable dead code.
🤖 Prompt for AI Agents
In runelite-client/src/main/scripts/BankSearchFilter.rs2asm around lines 40 to
44, the conditional that checks `item id == -1` is redundant and creates an
unreachable jump to LABEL25; remove the if_icmpne/iconst/.../jump sequence and
replace it with a direct jump to LABEL21 (or simply fall through to LABEL21) and
delete LABEL25 if it becomes unused to restore a correct, simplified control
flow.
No description provided.