#development
1 messages · Page 3 of 1
custom anchors hub plugin api when @worthy sparrow
What geheur is getting at is that our bar for quality for hub plugins is miles below the quality bar for core, but I think this is too integral to the client to let hub plugins even try to solve it tbh
It would be up to Adam, but I'd be very surprised
ahh ok, yep it was my new-ness LOL
didnt know about that difference in where the bar was
makes a lot more sense
the current solution is no solution which is worth considering.
offloading it to the hub might be the only way to do this.
(practically speaking)
Yeah I had submitted a hub plugin with a functional way to reorder (and resize) the sidebar icons, which was kinda janky and not optimal, but it worked haha. I'm sure actual devs could make pretty good plugins for it.
oh interesting how did you accomplish that? code-wise?
at least you tried 🤣
dw he succeeded lol
ive moved back to working on my own plugin
It's been a while but iirc I searched the Jtabbedpane for icons based on the tooltip, and then gave the user a field to enter something like "info:1" to give the Info config priority 1. It's been so long and I never knew what I was doing to begin with.
wow searching the swing components is ultra jank XD.
IIRC we are not really a fan of hub plugins diddling the swing tree is the thing
Yeah it was a pretty rough attempt haha 😄
Any updates on this by chance? (API for choosing how to render RLObjects)
Any suggestions to help me differentiate between items dropped by another player that become visible to me, and items that are genuinely immediately dropped for me by the game, such as when opening chests or getting event (or quest?) rewards with a full inventory?
the best prior art you would have is the loot tracker plugin
Hey there, is there a possible workaround to grab the PartyLeader?
https://static.runelite.net/runelite-client/apidocs/net/runelite/client/party/PartyService.html
party leader isn't a concept
How would I then possibly be able to grab the leader of a created Party?
I assume, that I wouldn't be able to do that, right?
yes you can't do that
specifically, parties don't have leaders
I thought the user creating a party would be flagged as leader in the backend.
Checked the docs and thought, there might be a workaround or that someone else asked a similar question, but thank you guys for the clear answer.
Type
Other
Operating System
Windows
OS Version
No response
Bug description
Runelite causing the following message in event viewer:
VBScript is scheduled for deprecation. Our telemetry indicates that your system is currently utilizing VBScript. We strongly recommend identifying and migrating away from any VBScript dependencies at the earliest. The following process has been detected as using VBScript. The associated process tree and call stack are provided below to ...
Hi. How is this a security issue?
sorry not a security issue. after reading the documentation from microsoft it seems like everything will be fine until at least 2027 after which they will no longer support VBscript (and any potential security issue will no longer be fixed) but for now it seems like there is no problem. starting somewhere in 2027 VBScript FODs will no longer be enabled by default which could potentially cause issues with the client
Is there a way to grab the value of a config before the config manager loads? I am trying to change the type of a config from enum to set<enum> and I want to translate the old selected value into the new set. However it seems like once the config manager loads it sees the type of the saved config doesnt match and overwrites it with the default for the new type
probably just want to use a new keyname and migrate the data instead (with some check/flag so you only migrate once)
Really grateful to see this plugin approved and on the hub! I was wondering what could be causing these images to not preview on the page of the plugin. Is it perhaps because the images are within a collapsible <details> section?
https://runelite.net/plugin-hub/show/streamerbot
pretty sure it needs a direct link to the image - the one embedded in the readme is a link that comes with all the Github framework around it, which is no good for Markdown rendering
https://media.githubusercontent.com/media/DarockObama/StreamerbotPlugin/e01f63b98883eb48a71463b583dc49af5fc01e1b/resources/Streamerbot7.png is a direct link for one of the images for example
basically if you go to the link you're currently using in readme and hit the 'raw' button you'll get a link you can use in Markdown without issue 🙂
I see! Thanks for the clarification 😄
nah they're all PNGs
are you using git lfs?
Yes I am, I initially set it up for one specific large .mov file, guess I shouldn't have done that for .png too
yeah, if you get the file from the repo directly it gives you the lfs pointer instead of the actual image https://raw.githubusercontent.com/DarockObama/StreamerbotPlugin/e01f63b98883eb48a71463b583dc49af5fc01e1b/resources/Streamerbot1.png
using lfs on github is a bit of a trap since they bill you on bandwidth
oh yikes
good to know
So would removing .png from lfs fix the image previews? When I made the readme file I simply dragged and dropped the images into the code in intelliJ and it automatically grabs the path form the repository root as follows.
yeah
Alright, thanks!
can someone give me some sort of sense of directions so i know what to expect after submitting a plugin. Like to what extend does code quality matter? How long does the submitall process take ( i did see there was a recent uptick in the amount of new plugins, so i assume it might take a bit longer then normal)?
Code quality is not checked at all. As long as you aren't breaking the rules, majorly breaking the client and your code is readable you should be good
And there is no set timeline for how long a plugin may take to get merged
well there are some basic code stuff also checked but you will be notified if you do it
🙏 🕋
fair
smaller prs usually get reviewed quicker though, so worth keeping that in mind
Right yea, that seems normal, altough i am not quite sure what is big small or medium
what is your pr
all or most of the newly added plugins get tagged as size-0
https://github.com/runelite/plugin-hub/pull/10219 , its not small
its like 7k lines
yeah this one is pushing it
my personal limit is like 5k for a new plugin but i think the line counter showed 6k so it's whatever. i'll get to it at some point
what ill do is convert it into draft, clean up some console logs and other WIP stuff, then update the pr to that version
you don't have to but ok
you're not at a threshold where i would straight up ignore this
alright 🙂 , then ill be lazy for now, but if you need/want i can clean it up
noob question: are IDs defined for rune types anywhere (like air rune = 1, mind rune = 2 etc)? i didn't see any in the api docs but don't wanna redefine them if i don't have to
followup question: is there a proper way to search for such definitions rather than just peeking through the api docs and asking here if i'm uncertain?
items have ids yes
for rune pouch there is something from client.getEnum
in this case i'm not dealing with actual runes, just enumerating types. i could use the item ids for that since they're unique anyway but i feel like that would be poor style
Anyone here who is experienced with git lfs? It seems that removing files from lfs can be a huge pain. The process apparently rewrites your commit history, causing existing commit hashes to change, which I assume will cause my plugin that's on the hub to not load anymore.
that would just be rewriting it with extra steps
but without the hash change.
the hash would still change
I was wondering if slightly renaming the .png files would let met store them normally again
git remote add new-repo new-repo-url && git push new-repo head would create a new hash?
I'm pretty sure it does, based on this doc https://docs.github.com/en/repositories/working-with-files/managing-large-files/removing-files-from-git-large-file-storage
no, rewriting history would change the hash
oh wait, so it's possible to remove files from lfs without rewriting history?
if you want to fully scrub lfs from the history, you have to rewrite history
if you just want the file to not be in lfs in the future you can probably just remove it from lfs and create a new commit
which is probably better since we won't have to re-review your whole plugin
yeah exactly, I just want the .png files to be pre-viewable on the page, I'd still like to keep lfs for some large files that are just for downloading
cant you just git rm them and then readd them as non-lfs files? how big are the pngs?
what I tried was deleting the files in the project, which I assume also removes the git, commit, re-add them in the project, commit again and then pushed
the pngs are definitely small enough to be stored normally, in hindsight I should have just done that
Thanks 😄 I'll give it a go
do you have the plugin downloading things from lfs directly? github bills per gb so that can get pricey sort of fast depending on how big the files are
its just for his readme
which happens to break the viewer on site since it tries to load the lfs pointer as an image
The plugin doesn't use the files directly at all. The png files are meant for the readme. There is one .mov file though that's meant for the user to build an alert in OBS.
Does github's readme viewer work? You could have a specific branch that you redirect to
It does work on github yes, just not on the pluginhub page.
Also, will github also charge for people downloading that .mov file from te repo eventually?
In that case, I'll find another way to host that file too.
you get 10gb free per month, any views of it will count toward that
I hate lfs
Yeah I will avoid it like the plague in the future.
Is this still the stance of the RuneLite team?(see image below) I know that the discord style triggers (colons on each side of the trigger word i.e. :lol:) were added to the internal emoji plugin sometime in the last year, so I thought I'd ask before thinking about it too hard.
For context, I'm mulling over the idea of implementing discord style triggers in the custom emoji plugin. Since Jagex automatically formats messages on their end ("tHiS iS a tEsT mEsSaGe" gets formatted to "This is a test message"), we're limited in the choice of triggers we could use for the emojis. If an emoji is added that uses a commonly used word or phrase, it's probably be triggered inadvertently. Discord style triggers would solve this problem.
correct we added them to the core emoji plugin since
is there an equivalent to client.getitemcount but for animations? I found that I crash if I put an animation id that doesn't exist.
it's not a huge thing for what I'm working on, just a minor annoyance.
no
you can client.getIndexConfig().getFileIds(12).length
lmao what kind of black magic is that XD. Thanks abex!
thanks, this also explains why other ids also crash me
there's a few empty slots
+0 I would assume
the last value is the highest id, getItemCount is the highest id + 1
ah yeah I see
I mean I think I need to iterate the array to find whether an id is valid because of the gaps
anyways this is the tool I need, thanks again.
where is a bad anim causing you to crash?
12509
like what are you doing with it?
hmm, I wouldn't expect that to crash
2026-01-20 15:05:31 PST [Client] ERROR injected-client - Client error
java.lang.NullPointerException: null
at qb.av(qq.java:44)
at fl.ih(fl.java:2859)
at dt.iy(br.java:2591)
at client.qg(client.java:12984)
at client.bf(client.java:11642)
at bm.bs(bm.java:463)
at bm.gc(bm.java)
at bm.run(bm.java:16938)
at java.base/java.lang.Thread.run(Thread.java:829)
error_game_crash
ah, they rewrote this recently
I feel like I didn't use to crash so that makes sense.
For my plugin, pvp leaderboard, could I have it so that people with the plugin have their rank displayed to those around them in the world? This would act as an opt-in system rather than putting it up for everyone that has been ranked outside the plugin.
I wanted to check to see if scouting is the main issue here, or if it's displaying someone's rating above their head in game while moving around in any fashion or a specific one.
seems fine I guess
Thanks Adam
Is there a way to see who has installed your plugin? If not I will have to go off who has submitted matches, which is also ok, just a little more janky
No
what you've describe sounds like you would still end up showing people who have uninstalled your plugin if they previously used it
This is why I said it's janky. If they vs someone that has it, and they don't submit the match then they'd be removed from the list of "known installed and submitted" which seems to happen decently frequently, maybe a few days to a week or so for people that use it based off the data I have now
Not sure if this is an acceptable compromise or not, but people that install -> never submit a match, they would never be on that list of auto-populate
I have it so that if people do that they only have a certain number of people they can lookup before it stops allowing them to lookup people without submitting a match, and I can tune that more aggresively too. Maybe something like if they've submitted a match in the last X timeframe?
But I'll figure it out and submit a pr and go from there unless someone has a good idea
just make a toggle for "show my rank to other players" and then the plugin sends a heartbeat or something that invalidates after some minutes
Il get it eventually...
use enqueue not execute
oh?
fixed, I remember seeing something like that in the clan rank helper plugin earlier
anyone have an easy way to run a windows vm with emulated packet loss in order to test something?
No experience with it but iv seen this name thrown around some in other circles.
https://jagt.github.io/clumsy/index.html
oh that looks helpful
What happens if multiple plugins subscribe to onPostItemComposition and modify the ItemComposition in the event? Do all the plugin subscriber methods get called sequentially in any specific order?
Is it possible to render on multiple layers from a single overlay?
no
there was me thinking "New star added" was for the star mining plugin and was thinking "geez theres a lot of new stars" - just realised its the repo stars 🙈
802ca10 Update Quests to 2026-1-21 - RuneLite Cache-Code Autoupdater
9e32204 Update Scripts to 2026-1-21 - RuneLite Cache-Code Autoupdater
a734929 Update Item variations to 2026-1-21 - RuneLite Cache-Code Autoupdater
54693a2 Update Legacy ID classes to 2026-1-21 - RuneLite Cache-Code Autoupdater
362e38d Update GameVals to 2026-1-21 - RuneLite Cache-Code Autoupdater
a8de1de API docs for 1.12.13 - RuneLite updater
1c5e5f1 Release 1.12.13 - RuneLite updater
@grim oar goal-tracker failed to build
Type
Incorrect behavior
Operating System
Windows
OS Version
Win10
Bug description
Drops from the unique and tertiary tables at Hueycoatl drop in addition to other drops you get from the boss. I have 25kc in game but the tracker is showing 28 as I've received two drops from the unique table (two leather drops) and one drop from the tertiary (tooth half of key). Small bug I suppose but I believe the plugin is tracking each item dropped as one kill, so if you get two drops...
In a way this is a Jagex bug. There are several NPCs that send two loot events when you get a tertiary drop. In this case it shows as two different kills.
When looking at existing plugins with a sidebar icon it seems most create it with a line like
final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "icon.png");
When I tried to do this with the example plugin I got null argument exceptions on icon.png until I created a resources directory in src/main and then changed "icon.png" to "/icon.png" to lookup from the classpath root instead.
Is icon.png supposed to go somewhere else? I originally only had it in the root of the repository as the new plugin guide mentions but the null argument exception happened then too.
It shouldn’t be in src but in resources
For any plugin that uses that line look at where the file is located
icon.png in the repo root is for the plugin hub icon
the plugins i've seen while looking through the runelite repository on github don't seem to have an accompanying resources folder or icon png.
the runelite-client/src/main/resources directory doesn't seem to contain them either.
is there somewhere else i should be looking?
ty both of you for the responses btw
they are in runelite-client/src/main/resources though, under net/runelite/client etc
oh, thank you. i didn't go looking deep enough.
so if i want to add a sidebar icon for an example plugin, do I just add a directory matching the name of that example plugin to the net/runelite/client/plugins directory and stick it in there?
Hey guys, I am trying to update my plugin and have not run it since the gradle changes. seems it does not run anymore. I tried to copy the build.gradle from example plugin and I dont ever get the green triangle for run. Same if I make a new copy of ExamplePlugin template, when I get to step 5 - Run the plugin, I dont ever see a green triangle in the gradle file.
edit: will leave incase anyone has same problem. fixed by hitting "execute gradle task" and typing run in there
the client build changes shouldn't impact running hub plugins afaik
the green triangle is on exampleplugintest.java
on its right-click menu
oh nvm it says something else now mb
Probably just needed to gradle sync and then the button would pop up
Well the new build.gradle has its own run task now
Yeah but I would bet after copy/pasting the contents it won't show the button til you sync
While testing a current wip plugin, I can configure the IDE to allow multiple instances (second gradle config), but how would I also make it use a different login?
Should I start the first instance, log in via jagex launcher into another account to generate the credential file once again new and then run the second gradle instance?
someone will tell me im way off as i usually am 😅 but would it work if you run the instance, swap out the credentials file and then run another instance?
(which is basically what you just said now i re-read it)
Use a different profile location
And then run the debugger with the args --profile=?
No I mean setting the home dir
Oh okay, could you eventually elaborate that a bit more ron or is there a documentation which I've missed?
Otherwise I've found this (https://github.com/runelite/runelite/wiki/RuneLite-Launcher-Configuration) and would've tried to change the debug config for the second instance.
But I guess this wouldn't have "fixed" the two different account instances.
Passing -Duser.home=directory/some/where in the run configuration
Ah and that would allow me to create two different credential files instead of overwriting one file.
And I guess I only have then to configure VM-Options within the second debugger instance, right?
only one of them, yea
ron, could you please explain what I'm doing wrong?
Config ignores the home-dir path and the credentials file in it and it seems it returns to .runelite.
it's a environment variable not vm options, sorry
if you click the little icon on the right side, you can edit it there
I think without the D
without the d
if you scroll down in the list, you will see it and you can edit it there and it will populate
Is there a way to reset models that are equipped? I am calling client.getItemModelCache().reset(); but this only seems to affect ground items. In the vid you can see what I mean, once the item is equipped the model is snapshotted and doesn't get refreshed until the item is removed and re-equipped.
https://i.imgur.com/wouUCg3.png
Seems like it didn't work as/with a gradle config instance, had to use Application with the above settings.
If it would work with gradle, then I wasn't able to make it work with D, without D, as VM-option, user environment variable or as system environment variable.
Adding a variable to the run-task also didn't work for me.
You could try doing what transmog plugins do and see if it resets it.
player.getPlayerComposition().setHash();
Maybe that works?
Might have to modifyplayer.getPlayerComposition().getEquipmentIds() first
I don’t think what you’re asking for is possible tbh. You shouldn’t have to be running multiple developer windows open, load the single dev instance to confirm it’s working
Infected-partymode?
Hypothetically, if you would rewrite Runelite from scratch, what are the very first things you'd start with to get something that works?
Like the most barebones runnable client that's not just pulling the client and running that
Mapping obfuscated functions/vars to known functions/vars and exposing them for use
I'm interested in metrics on each of my features in my plugin and how many people use each one. Is there any native way to do that? If not I'm guessing there isn't a way to put that in without getting the warning about sending data to a third party which isn't worth it for metrics
no and correct
Thanks for confirming
Hello guys. Using the cache tools, is it possible to know if the latest cache index metadata has finished downloading? I imagine that meta data is downloaded in the background, in the same way that the main cache data is.
Basically, my aim to is know what the latest online revisions are for the cache indexes.
But I know if I check those revisions too early after the client starts, I could be getting outdated revision numbers.
Also encountering this issue
Then again, I could be wrong in my assumption. maybe the revision metadata is downloaded before you reach the login screen🤔
With the settings in the screenshot, it did work.
And for playtesting, I had to have 2 users minimum at some point.
Yeah, trying to make some sort of manhunt gamemode.
I have had this issue EXCEPTION_ACCESS_VIOLATION and thought it was a CPU issue. Installing Eclipse Temurin JDK 25 seems to have fixed it with the Java 25 compiler fixes in that version compared to the outdated one I was on.
Prior to this I tried almost all steps here including DDU reinstalling card drivers, setting "CPU Core ratio"
manually set it to desired speed 3.9ghz & "Sync all cores". Applied a "Positive Voltage Offset", Increase Load Line Calibration, ASUS MultiCore Enhancement is s...
8400+ translations in that danish translation plugin, thats some dedicated (well unless ai and not proof read) lol
Type
Crash or hang
Operating System
Windows
OS Version
Windows 11
Bug description
I apologize, I'm not the most computer savvy person in the world and have had friends try to help me through this.
Attempting to play Guardians of the rift on world 445, the game will cause my entire computer to freeze each time (I can play Pest Control without issue).
Runelite also cannot be running OSRS while watching Youtube videos or the computer will freeze. This hasn't always bee...
"Staff": "Personale",
not proofread imo
da runescapeo
tempted to make ghost translation plugin, "wooo", "woo woo woo", how infuriating that would be
only tob spectators can understand anything
and amulet of ghost speak
replace censored ******** in chat with "woo woo"
"you absolute woo woo"
lmao that would actually work
"go woo woo yourself"
"im so woo wooing tired"
apparently Personale is right btw
I don't believe you
deepl i normally trust
did you include context like "I used my staff to beat the pker over the head"?
lmaoo im thick
you are now responsible for reviewing this pr
dont ever let me review this thing
^
i wonder how it deals with those ambigiouties though. like is there any staff workers in the game
i like how someone made a really good exhaustive translation plugin that can do anything but apparently nobody cares, knows it exists, or can figure out how to use it to the point that making their own whole ass translation plugin is easier
is it the api one
no one wants to pay money for a plugin though
a smart translation plugin would crawl the wiki and download every conversation and item and option thru whatever chisel is
oh i didn't realize you had to like pay for it
ok that's stupid then
thought they had some deepl-based backend
I mean api's have usage tokens usually
is the wiki all input through crowdsourcing and manual input?
i dont even think that tbh, like it would translate the same phrases multiple times then, seems a waste. Like ron said, having some source that is kept updated that you can scrape every so often (like updates time or something) would be a) much faster and b) more efficent
i'm referring to runelingual
i don't know that much about how it works other than the original reviewer had high praise for it
it seems to work for japanese. not for german/french though
theres so many plugins for translations 🙈
that seems logical...
Hey guys, is there a way to detect which tab I’m currently on when checking for example scoreboards of ToB? How can I tell if I’m in Entry/Normal/Hard mode? I looked at the widget inspector but couldn’t find anything that indicates which tab is active
use the var inspector and see if a var changes when you change tab
Thanks Adam 🙏🏻
Microcode 0x11f 😭
I got the name of the variable TOB_SCOREBOARD_TAB, but how do I find its integer ID so I can access its value? I don’t see IDs in the inspector
getVarbitValue(VarbitID.TOB_SCOREBOARD_TAB)
I looked at all the defined variables here (did a search on all files): https://github.com/runelite/runelite/blob/02e33cb1e69c9c0de18ed686f22ed8de9582671c/runelite-api/src/main/java/net/runelite/api/gameval/VarClientID.java#L226 but the variable I mentioned doesn't exist although I see it in the Vars Inspector
varclient != varbit
Gave the link as an example, I did a search over all files including Varbits.java
Thanks now it worked for me !
Can we make M4 and M5 bindable as hotkeys
they aren't key events so not really
Can we use them at all? I'd love to be able to check a checkbox to use m4 as ping button
yeah
there is a pull that makes the keybind stuff support it but it breaks stuff iirc
https://github.com/runelite/runelite/pull/19249
this one? it does say it breaks something in one of the commit messages, but then does go on to (I think?) fix that
yeah, I think its still wrong tho
41fa988 Update wiki data - RuneLite Wiki Scraper
new plugin time
Use /ghauth command to get github roles and be allowed to post in #development
Hey all, I'm working on a plugin to add an extra close button to the bottom right of the bank for easier bank standing but I'm running into an issue where my button is only closing the interface client side. Does anyone know how I could actually replicate the close button OR make the press of this button press escape (or rebound key) to close interfaces? You can view the plugin's repo here https://github.com/JohnMichaelRouth/close-bank if anyone wants to clone or take a look. Anyone have any ideas?
You can't, rather it would be against the rules to do so, since that sends a server action.
Jagex's third party client guidelines: https://secure.runescape.com/m=news/third-party-client-guidelines?oldschool=1
Additionally, these features have been rejected or removed from RuneLite: https://github.com/runelite/runelite/wiki/Rejected-or-Rolled-Back-Features
D: is there a way that pressing this could press the escape key? I'm trying to single hand game without having to move my mouse super high up to the normal close button :(
I will need to figure that out, thank you for the guidance
Are there any plugins that you know off of the top of your head that do something similar? I know of ones that move entire windows but not parts of interfaces
you could also have a gamer mouse and bind esc to one of the side buttons
this was the key, i really appreciate you, idk why i didnt think of this
I am setting up an env to make a plugin and running into this problem. I searched this channel in case it has been already discussed, but the mentioned solve did not work for me.
Error: Main method not found in class com.gauntletlocker.GauntletLockerPlugin, please define the main method as:
Howdy 🤠 if you push the repo to github and link it here, we would have an easier time to debug it with you
Hey, it is pushed to my gh, https://github.com/KihiraLove/GauntletLocker
Never access the gauntlet again. Contribute to KihiraLove/GauntletLocker development by creating an account on GitHub.
Can you just add *,the gauntlet to Custom Hides in Custom Menu Swaps?
Probably, but this was requested from me by a youtuber for his new series.
Well it's also achievable without creating a new plugin
Hello, I opened a PR and the github workflow found out that my build.gradle was stinky, i reverted all changes that i made to it so its just the example build.gradle
https://github.com/runelite/plugin-hub/pull/10304
How can I restart this check on my PR?
Push a new commit to your pr
your plugin does run fine for me
The goal is to have the gauntlet portal recoloured, and and angry message to show up when it is clicked
where is it you're running into the issue?
I'm trying to run this.
classpath = sourceSets.test.runtimeClasspath
mainClass = pluginMainClass
jvmArgs "-ea"
args "--developer-mode", "--debug"
}```
Never worked with gradle before, so I just followed the how to contribute to plugins section form the plugin hub repo
Hey Nyx, just want to let you know that if you haven't already, try to play around with which GPU plugin you use. Switch between 117 HD, GPU, and GPU (Legacy), and see if you face the same issues.
template shows that pluginMainClass should point at your test class
https://github.com/runelite/plugin-hub/blob/master/templateplugin/build.gradle#L17
you're pointing it at your plugin class
diff --git a/build.gradle b/build.gradle
index 87c21f2..1716889 100644
--- a/build.gradle
+++ b/build.gradle
@@ -14,7 +14,7 @@ repositories {
}
def runeLiteVersion = 'latest.release'
-def pluginMainClass = 'com.gauntletlocker.GauntletLockerPlugin'
+def pluginMainClass = 'com.gauntletlocker.GauntletLockerPluginTest'
dependencies {
compileOnly group: 'net.runelite', name:'client', version: runeLiteVersion
Indeed
It's working now, thank you for your time mate
cheers
np, gl
code blind not stupid, happens - brain reads what it wants to read
@ cooper, thank you for babysitting my pr and helping me
Is there a resource for animation ids? I couldn't see an option in dev tools (i might be blind tho)
dev tools do show anim ids
there is no "anim id" viewer mode, but if you show players, it will show the anim id aloongside the highlighted player
On another note, I have a question for you guys. What kind of object is this sailing arrow?
I want to detect it in a plugin, but I dont know how.
Hi, does anyone know if there's a resource on all possible clan broadcast message formats?
it's just a model technically, but I don't think you can do anything with it through apis exposed atm
Submitted my first plugin last night. I'm excited to see if it get accepted
mm ok. Im wondering if it comes through the drawcallbacks, however I dont know how to check, as I dont know the id of the arrow object
You shouldn't check skill == Skill.OVERALL. It's deprecated, always null, and not passed to onStatChanged
You could also use a ScheduledExecutorService that runs every UPDATE_DELAY_MS rather than using the gametick
I'm trying to play the stun animation, are the little yellow birds not part of the animations? And if they aren't what are they? I couldn't find anything with dev tools
ah great thanks!
that's a spotanim
in the dev tools it's the number after G:
Ohhh, okay, thanks for the heads up! I'll check it out later today. Thanks!
how did you know these model ids? I am struggling to find which definitions use them. if any.
oh ok, I guess they do not have a standard definition. unless you count "defaults" as a definition
yeah, they're not a config in the same way items, npcs, etc are
ah I found the arrow in the drawTemp callback :). I used the vertex count to idenify the model. which happens to be 42... 😄
do PR's go to the back of the queue again once reviewed and feedback is given?
This field in actor.java is not always accurate to it's description.
`/**
* Gets the current animation the actor is performing.
*
* @return the animation ID
* @see net.runelite.api.gameval.AnimationID
*/
int getAnimation();`
There are times when the actor is infact not performing the animation returned here. They are not common, but they do happen on some bosses. I believe this is because the client does some additional checks before actually applying the animation set on this field.
Would any devs with source access be interested in doing something about this?
I think I know where the checks are, im happy to show them if that helps.
Usually not, but there's no hard rule for this.
llemonduck reviewed your pr so only she can verify that you fixed what she asked for
ahh i didnt know if others would then review the additional changes, yeah no worries 🙂 just wondered how it worked
Simulates boss kills, drops, and pet drops with realistic messages.
Features:
- Boss drop simulation with kill count and fight duration
- Pet drop simulation (52 pets: 9 skilling, 43 boss pets)
- Collection log integration with popup notifications
- Clan chat announcements with ironman icons
- Auto-increment kill count option
- Value randomization (5%) for drops
- Quick mode switching hotkey
- Comprehensive test suite with 16 unit tests
Configuration includes boss settings, drop...
what a fascinating plugin layout
why does AI always insist on using reflection for publicly available properties
i guess thats what its seen from where its learnt
comprehensive test suite with 16 unit tests
has tests, lgtm
this also sends chat messages which is obviously not allowed
does java not have template strings?
yeah, that would be much nicer than 12 lines of append haha
gotta squeeze out every last drop of performance and use the stringbuilder :^)
About 20% of the time when I start my client and my plugin loads I get a null pointer at this stack trace:
ERROR n.r.client.callback.ClientThread - Exception in invoke
yg:
at ab.at(ab.java:58172)
at fj.av(fj.java:151)
at client.xz(client.java:17629)
at client.getItemDefinition(client.java:1512)
at net.runelite.client.game.ItemManager.getItemComposition(ItemManager.java:427)
at my code running on startup in client thread invokeLater
It seems like the item definitions are not fully loaded when my plugin is started. What's the best way to handle this? Just try catch and retry?
wait until the game state is >= LOGIN_SCREEN
Type
Crash or hang
Operating System
None
OS Version
Zainali,2585
Bug description
Bilal
Zain
Asad
Name
Screenshots or videos
Zain ali Bilal name
RuneLite version
Vjvjhgh
Vjvjgj
Logs
No response
Wtf
Ah, my favorite RL version : Vjvjhgh Vjvjgj
inshallah the runelite team will be cursed
mhm mhm
I suspect with no logs how can you check "Bilal Zain Asad Name" is actually happening
Where can I install Zainali,2585? Is that like a new linux distro?
I heard it is the new Distro replacing Red Star OS 👀
I thought hannah montana linux was the replacement for that
Nooo! that replaced the Justin Bieber Linux
Thank you for the suggestion:
117 HD has allowed me to do a farm run while watching youtube.
However, both 117 HD and GPU (Legacy) both freeze in Guardians of the Rift
Considering you're using on a 14th gen Intel CPU with a really old microcode version (0x11f), your crashes are probably a result of the Intel vmin shift issue. [Reference] Your JVM crash logs look fairly consistent with what we've seen in the past related to that issue.
The crash logs aren't related to the freezes you're experiencing though, as JVM ...
Any news on this?
Missed three frog events before it hit me it might be Entity Hider.
Frog Event is Lamp Event now, so this would be great to have a fix for (flipping the enable as a workaround is ofc ok for now)
Hello! Is there a resource where I can learn more about how to create viewable children on a widget? I'm trying to create a "widget interface" where a user can click on something. I hope that makes sense
32ec8e3 update osrs-chatlogger to v1.2.0 (#10295) - NullBotOSRS
14e792b update customizable-xp-drops to v1.12.0 (#10312) - l2-
f452ea7 update weapon-animation-replacer to v3.7.17 (#1... - geheur
youre busy tonight haha
my router broke
@Car-Role I would be keep to test this out also. Discord is N1NK
Just wanna bump this so it isn’t lost in the logs. If anyone knows how I can get more information on this I’d appreciate it!
the answer is we don't really have a resource for it
you can look for createChild in the source code
You could look at how the View DPS button is added by the core wiki plugin
Thank you! I’ll check that out
Read like two messages after that
Oh wait that was your message, someone said no when you asked a few hours ago, not sure why you asked again
I was asking again to reclarify that this would keep the inventory background it clickthroughable, just a smaller area
as opposed to something like this
Still a no almost certainly
Jagex's third party client guidelines: https://secure.runescape.com/m=news/third-party-client-guidelines?oldschool=1
Additionally, these features have been rejected or removed from RuneLite: https://github.com/runelite/runelite/wiki/Rejected-or-Rolled-Back-Features
just read the removed in past, i guess this was skirting on the edge of "removing the inventory pane background or make it click-through" by keeping just a subsection of the pane without it being clickthroughable
Any movement or resizing of click zones for any interface or component under combat options, inventory, worn equipment, or spell book
This as well most likely from the jagex guidelines
You're essentially trying to skirt around something that was removed for ~the same reason it was removed as well
red clicking through an item in your inventory with modern clickthrough was certainly way to far, was hoping that this would be less abusable and more just qol
but gamma is right and i'll drop this idea
is the party server getting fried right now? seeing pings show up very late and in clumps of several at a time
Does HitsplatApplied event get triggered on every hit, even if it doesn't show up on your client (since I think you can only see a max of 4 on one enemy)? I think the answer is yes but wanted to confirm
yeah
Thanks!
Would love to see this implemented!
Also having a similar issue, however for me the legacy GPU plugin does not resolve and I have similar issues with the 117 HD plugin. Only way I've been able to keep the RuneLite client running for longer than ~30 minutes without crashing is by disabling all GPU related plugins. I'll attach some of the error stacks below for both GPU and 117 HD.
`2026-01-24 13:55:28 CST [Client] ERROR injected-client - Client error
java.lang.RuntimeException: unable to map GL buffer 798 size 4194304
at net...
Here's a different freeze from having 117 HD running while doing a farm run and having youtube open
I am also having this issue. Massive memory leaks, client spiking to well over 4GB ram usage. I have argument added to allow 4GB allocation but even that isn’t enough to prevent it sometimes. It’s the GPU plugin causing the issue, when disabled it’s fine. It seems to spike when teleporting or loading in new areas IE after using charter ship. I would be willing to bet the other open issue RE GOTR is the same as above
I’d be willing to bet this is the same issue reported here:
https://github.com/runelite/runelite/issues/19804
Almost certainly an issue with GPU plugin. When disabled it doesn’t happen. Some have suggested rolling nvidia driver back to most recent stable version, however I was experiencing these issues even before I updated my drivers
Things have gone too far, even Jagex has their own bingo plugin now
Wasn't that teased last league
Yeah I think they might've mentioned it, maybe around the community event?
I did enjoy Gridmaster, just didn't last very long - As in it was all quite easy
I enjoyed it for the 2 days it took to finish it
xd
it gave me a second chance to enjoy the khopesh, my beloved
it was too fast imo, skipped too much of the game to be fully satisfying
but not bad for the short timeframe
sure, but it was a nice short event for a change
I had thought it'd take longer to complete, until I snowballed big-time halfway through
I wish i did it :(, i was burned out from rs at the time though
Mixing Super Strength potions at Edgeville bank
71be2f1 Update weapon-animation-replacer to v3.7.18 (#1... - geheur
This got fixed by #19288 , and my continued testing has confirmed this is no longer occurring. The issue can probably be closed.
So... Like... Been four years... You guys ever gonna be able to handle an empty block list?
My friends, could we not resolve this 4 year old bug?
7+~ year old bug
I like the part where they joined github ~today~ less than 30 minutes ago and already are getting their comments marked as spam
I think thats probably someone here marking it as spam
ye
@granite quest you might be interested in that^
sort of related to tcp rtt but not
the new servers here https://secure.runescape.com/m=news/a=97/winter-summit-2026---overview?oldschool=1 are also going to block icmp i am told and so probably want to get that working sooner rather than later
Thanks for the heads up. I'm looking to get a PR out for that sometime this week
looks like that commit has most of what is needed for rtt using SIO_TCP_INFO. though i didnt have the same experience with the error code
oh really
you mean WSAGetLastError()?
hm
i thought it didnt work but maybe im wrong
yeah it was working for me
I actually had a thought on how we might fix that: by not writing default configs to file
I'll admit I haven't looked into changing that behavior yet though
I think there is some (or used to be) issue with how the config syncing stuff works
that makes it unobviously hard
That's part of what I want to do before I touch the code since I figure there is, or was, some reason it works how it does now
I think the config sync stuff has changed a lot since then so im not sure if it still is that way or not but yeah
But it'd be a big win if we could only sync changed configs instead of everything
I think it does only sync changed configs doesnt it?
Relative to last saved yes, but I'm pretty sure syncing a fresh profile sends default configs for every installed plugin
oh yeah
not sure that would be a "big win" since that happens almost never but yeah
It'd be nice to be able to slim down configs over time even if it doesn't happen right away
Given that config is (still?) the majority of our API usage
there is also a thing where null and unset are handled differently on the client vs the server
yeah
Also happening to me as well on NixOS Hyprland
Hey alex, just out of curiosity, do you use an ARM-based CPU?
As alex stated, this is very similar to the issue I reported earlier. Seems like it's related to ARM-based computers.
Nyx, open task manager and monitor the RAM usage while playing runescape. In my friend's case, we would see the ram usage starting at around 1GB and steadily increasing to 19GB before crashing.
In that case, the temporary solution was to use GPU (Legacy) to avoid the memory leak issues
Nyx is not on a ARM-based architecture though, so this issue may be different. It could also be that both issues are related, but the ARM-architecture hypothesis is wrong
Hey, I see you’ve already established on the cross post, but no I am also not using ARM based architecture.
that was a shockingly large, yet unbloated, diff for a small-scope plugin
What would be the hard part of allowing game world overlays to draw at full resolution in stretched mode? I've seen a few people asking about this recently.
It seems like it would be simple to do but I don't know the stretched mode code.
(I mean simple in a technical sense. not in a sense of having to busywork rewrite every existing overlay to use it and scale itself on its own for people who want larger text).
a lot of them draw at specific layers (like eg under widgets or under/after specific interfaces, or under actor 2d), so they draw at various points in the middle of a client frame
and in stretched mode the client draws at a small resolution and gets scaled up as the last step
probably the best way to fix it would be to make stretched mode make the client actually just draw at a larger resolution and do no post-stretching, but that would involve basically replacing all of the ui rendering code I think
idk really of another way to fix it easily
you would have to have intermediate stretching steps I think where it drew layer -> stretch that -> render overlays -> repaet
or something
what if you only allowed this for ABOVE_SCENE? That covers a lot of overlays that draw lines that look blurry in stretched mode.
you could do it for ALWAYS_ON_TOP just by drawing over top of the final stretched image
but that isnt so great since it would draw eg tile markers above the inventory etc
can't you draw directly on the buffer that the game world renders into? that one isn't stretched.
you might be able to do it for ABOVE_SCENE with gpu
would be a neat feature but I understand if it's a huge amount of work/user complaints.
idk really how hard that would be to do offhand
Well anyways thanks for the insight. This topic feels a lot more challenging than I initially though (largely due to me realizing you'd have to rewrite so many plugins, lol).
Shame it can't be easily done.
Reviving this thread, maybe my most frustrating experience with runelite atm -- I'd be happy to try and help out.
@Adam- when you say:
Not easily. The overlays are drawn to the same buffer that the game UI is drawn to. It could be possible to split them apart for some of the overlays, but it is not anything I've looked at.
Can you expand a little more technically about what you mean? What relevant directories could you point us in for the code involved?
is that a coincidence
please point my llm me to the directories with the code involved
I did link that issue in #support earlier today. Someone asked about that overlay issue which is why I asked about it here.
dunno if that comment is by the same guy though.
Is the goal here to estimate packet loss? I'm curious on how the data looked for RetransmitCalculator. Also would you consider defaulting to displaying TCP rtt "ping" over ICMP ping in the ping display? I see we're already logging that information.
For anyone still experiencing this issue:
Check for the "Highlight Stackables" plugin; it was what caused the issues for me. I uninstalled it and the issue hasn't reoccurred since.
I think were going to make it show tcp rtt when icmp is blocked, which is what I thought you were working on
so Ive sort of not worked on it
but I could do that yeah
I would not make it show rtt if icmp isnt blocked though
Yes ICMP ping will be shown if available for the ping overlay with TCP rtt used otherwise. That is crystal clear
Also would you consider defaulting to displaying TCP rtt "ping" over ICMP ping in the ping display?
Oh, that isn't what you had said here so I clarified
I was curious on if your thoughts had changed since I saw the rtt in the trace logs
also i talked with one of the infra engineers and they were open to the idea of a per-region endpoint specifically to icmp ping to (so not pinging the world, but just an endpoint in the region the world is in). But I dont know how realistically theyll be able to deliver that or not is
so we should probably just go with the rtt thing for now until shown otherwise
That would be great if it happened
yeah
For anyone still experiencing this issue:
Check for the "Highlight Stackables" plugin; it was what caused the issues for me. I uninstalled it and the issue hasn't reoccurred since.
I believe the Ba Minigame plugin can also cause this.
finished a round of PC, afk'd to bio, came back to a crash. No youtube open, just osrs wiki pages
System crashes are not going to appear in your client logs, and they aren't directly a RuneLite problem. They are, in nearly every case, either related to GPU drivers or more likely in your case, your CPU. Especially since you're on a very out of date microcode that doesn't resolve the well-documented issues with your CPU, I am very inclined to say it's related to that.
Your best bet is probably to check Event Viewer around the time of the system crash, although I'm not sure if vmin-shift re...
Type
Incorrect behavior
Operating System
Windows
OS Version
No response
Bug description
I was trying to find out which plugin was generating chat notifications every time I recovered special attack energy, so I searched for both "special" and "spec" in the plugins list but no relevant results came up. Eventually I found out it's the "Idle notifier" plugin, but even though it literally has an option called "Spec notification", it doesn't show up when I search for "spec...
The crashes I’m experiencing, are the result of a memory leak. The issues I’m having sound very similar to the issues experienced by this user and those in the cross post (as well as various others on Reddit and in discords). One single RL client will use upwards of 4GB before eventually crashing. It typically spikes whenever I change area, for instance after a teleport. The crashes started happening after RL 1.12.12.1 was pushed. It’s not my GPU driver, as i’ve checked that. I wouldn’t imagi...
The crashes I’m experiencing, are the result of a memory leak. The issues I’m having sound very similar to the issues experienced by this user and those in the cross post (as well as various others on Reddit and in discords). One single RL client will use upwards of 4GB before eventually crashing. It typically spikes whenever I change area, for instance after a teleport. The crashes started happening after RL 1.12.12.1 was pushed. It’s not my GPU driver, as i’ve checked that. I wouldn’t ima...
1982b0c coordinate clue: show dynamic Baxtorian Falls r... - CraigStrathclyde
Added in 1982b0cf4dc58658fe67959a9a1d33662b3a5a69, thank you!
We discussed this on Discord a bit; we'd prefer plugins check var values on startup rather than expect events be posted when they start. For that reason, we're not looking to update the game event manager in this way.
20bd6cb idle notifier: add moth mixing anim - LarsTwiNky
I think this would be a decent fit here. Which sprite(s) needed to be modified from the cache to fit the desktop client?
32a65f1 api: add group ironman icon ids (#19650) - Fiffers
Is there a way to see plug-in utilization by CPU or memory
A list of all of them or individual
the debug plugin will show retained memory size
it also has a profiler for cpu usage but thats a bit harder to use
I'm on my laptop, can you get debug tools without building?
Its on the plugin hub
Ty
you might have to increase the memory limit on rl for it to work depending on how clolse you are
Requesting someone to look at this so I don't have to disable my heartbeats api. https://github.com/runelite/plugin-hub/pull/10353
Thank you
I've been tinkering with a cosmetic plugin that would let you RP as an amputee who has lost a hand/arm. I've found that I can make both hands/arms disappear from the player model by zeroing out the equipmentId e.g. for KitType.HANDS.
My question: is it at all possible to mess with just ONE side of the character model? My initial testing shows me everything is symmetrical left + right with my current approach.
Both arms and hands are the same kit and model I think
Yeah that sounds right
Got it thanks, seems like it's not going to work then
The memory leak seems to be happening again, possibly the cause of the massive tick variance at certain times on certain worlds. Running Sequoia 15.7.3, M4 Pro 48gb memory.
gross
truly I would have left that in queue forever
i would never find inner peace if i had to like maintain a list of PRs that i thought were stupid and ignored them so I've just become indifferent
it was like 900 lines of code, size is the only thing I really care about
also i sniped the only needed change
maybe redditors are right about the plugin hub
what do redditors say about the plugin hub
the plugin hub is all they got now that jagex fucked off their API lol
I don't actually care that much and it'll get like 3 downloads but that shit is actively bad for people's brains and the environment and I'd happily see it rejected
And we say it more
Say it’s not good and you’ll wake up to -100 up doots. Ask me how I know.
i wouldn't go as far as your take personally :L
@rose void #support message
taking a look
fix is up
I refactored that entire plugin and its better now but it still needs a ton of work
Does anyone know of an existing (and approximate) mapping of Hiscore bosses to NpcID's? It seems like something someone would have done, but I can't find anything.
no i don't think there is one either
Might be a dumb question, but how come the Developer Tools plugin only loads when I run via the gradle run task, but not when I run via IntelliJ test method, even with same jvm args?
you need --debug --developer-mode probably
debug and dev mode are not vm args
derp.
thanks
idk how i misread that ... lol thanks ... also in hindsight its obvious they're not jvm args lol
Can you make sure you got VB script enabled on your OS, since 24H2 it's a feature on demand not by default and depreciated by 2027.
which would trigger : "Cannot run program "wmic" and stop all telemetry but likely open CMD without running the script. Lemme know if you get any different result or if it remains.
../client/plugins/idlenotifier/IdleNotifierPlugin.java
@PluginDescriptor(
name = "Idle Notifier",
description = "Send a notification when going idle, or when HP/Prayer reaches a threshold",
tags = {"health", "hitpoints", "notifications", "prayer"},
enabledByDefault = false
)
missing "special" tag
8449e33 Update Widget IDs to 2026-1-28 - RuneLite Cache-Code Autoupdater
cdac542 Update Item variations to 2026-1-28 - RuneLite Cache-Code Autoupdater
e9bbbf5 Update Script arguments to 2026-1-28 - RuneLite Cache-Code Autoupdater
ea5c0c7 Update Legacy ID classes to 2026-1-28 - RuneLite Cache-Code Autoupdater
8b4cdd0 Update Scripts to 2026-1-28 - RuneLite Cache-Code Autoupdater
f5af27f API docs for 1.12.14 - RuneLite updater
7340f1a Release 1.12.14 - RuneLite updater
Am I wrong in saying that NPCComposition, more specifically, NPCComposition#getActions is retrieved from the game cache?
that is basically correct
Basically? What if I clarify with my use case 🤔 My use case is checking to see if a NPC has the dismiss option (unless RandomEventPlugin is hiding dismiss option on other people's random event), and if it does have dismiss, then that's the one I want to track since it would be the player's
or maybe to lessen the confusion, when you say basically correct, do you mean that when calling #getActions** it won't** return currently active/available menu options?
getActions is from the cache, so it will have every option the npc can have, even if its not visible
idk exactly which mechanism is used for random event ops
tbh I forgot that was an us feature and not a jagex feature
Lmfao same. I didn't realize y'all did it until I saw the code.
I'm trying to come up with a reliable way to highlight the right frog to talk to during the frog random event while also considering an edge case where someone close to you also gets the event
I think that is somewhat hard
Was hoping I could just do it onNpcSpawned but if I can't get the current menu options then doesn't seem like it
you might be able to do something smart with npc indicies
I suppose you mean for cases where there are two events, to track when it spawns and fetch the index that corresponds?
But then what if they spawn at the same time 🙃
maybe I'm reading into the edge cases too much
At the end of the day I guess the player will click the one closest to them lmao
I assume they spawn with mostly sequential indexes
I wouldn't know anything about that so I'll talk your word for it. The only thing I know about indexes in the game are that PID used to be determined by that until they changed it
Thanks for the advice
it complied at least
something is generating a lot of bank errors in the telemetry though, idk what
mes bank swaps have apparently reset/isnt working and the tag tab tab isnt scrollable, thats what ive heard/observed so far
cms/btl seems ok
@MrFastDie - I am not sure if you solved this or not, but the difference is where Bolt stores the runelite.jar
The below should fix it for you:
mkdir -p ~/.local/bin
cat << 'EOF' > ~/.local/bin/runelite-wayland
#!/bin/sh
export _JAVA_AWT_WM_NONREPARENTING=1
exec java -jar /home/<YOUR-USER>/.local/share/bolt-launcher/runelite.jar
EOF
chmod +x ~/.local/bin/runelite-wayland
Everything stated by @charlie-yarbrough is correct, except the PATH to the runelite.jar
Hope it helps.
so there was something broken with btl actually: https://github.com/runelite/plugin-hub/pull/10366
Type
Incorrect behavior
Operating System
Windows
OS Version
Windows 10
Bug description
Some items in my bank had menu entries swapped, for example to always withdraw 1/5/10 of specific item without holding Shift or changing withdraw amount at the bottom of bank interface. After todays update I noticed that overrides mentioned earlier got reset as they now match withdraw amount at the bottom.
While reapplying overrides works I'm wondering if it would be possible to rest...
This is because the component id changed for the bank items, and the swaps are keyed by the component id. So this is basically sort of a feature, we could maybe write code to manually migrate it but I'm not sure if that is worth doing or not.
Type
Incorrect behavior
Operating System
Windows
OS Version
Win 11
Bug description
Newly changed potion storage button does not work if you click it while have a bank tag tab open. Clicking from a vanilla bank tab works correctly.
Screenshots or videos
RuneLite version
RuneLite version 1.12.14
OSRS revision Rev 235
Launcher Version 2.6.7
Logs
No response
I see, thanks for information. I think I figured it out for myself, replacing menuentryswapper.ui_786445_ with menuentryswapper.ui_786444_ in profile file made it work again.
There's a powershell script that we can provide that would help migrate, so people can take the wipe as a fresh look or migrate if they want to? Sorta like how we used to have that gpu=false before we had !safemode.
(Get-Content "$env:USERPROFILE\.runelite\profiles2\ironman-438104738974000 - Copy.properties" -Raw) -replace 'menuentryswapper.ui_786445', 'menuentryswapper.ui_786444' | Set-Content "$env:USERPROFILE\.runelite\profiles2\new_ironman-438104738974000 - Copy.properties"
Then people would import this and use it as their new normal profile
sorta this but not telling people to edit their real file
that wouldnt work with synced profiles which is why we dont really tell people to do that
we could write a thing to migrate it not very hard I think
Probably not.
idk how much of a problem it is, can people just reset their swaps
you cant have that many can you
lol
that fight caves gif but bank swaps
migrate() would swap 445 -> 444 -> next one -> and again
each time they do this
the command i put there makes a new file of "new_...", the user would have a new hard file on their pc they can import it and then re-enable cloud sync on it
oh
it is still not ideal because people will mess up unless i edit the the command so that people dont have to edit both sides lol
¯_(ツ)_/¯
i was not aware this would break or i would have written something probably
Is this lil guy new?
Is there any way to access runelite-client/src/main/resources/item_variations.json from my plugin?
What are you trying to do?
I'm trying to get a list of all object ids that have the same name and appear visually similar. Currently I'm deduping based on model ID, name, colors, etc, but it seems like this file already does the same thing
ItemVariationMapping has that data
you can use that
that is for items though not objects
and it does not use model id afaik, just name
it's mostly just removing things in parentheses and then grouping the results together
e.g. prayer potion 1 2 3 and 4 together
Oh that probably isn't what I want then. Thanks for clarifying
Hi all, is this code checking the 'quest stage' of the fairy tale 2 quest? Or completion? And where is FAIRY2_QUEENCURE_QUEST defined anyway? I couldn't find any mentions in the API or Client apidocs, nor in the runelite repo. (Totally new to runelite, but I did read the wiki)
((client.getVarbitValue(VarbitID.FAIRY2_QUEENCURE_QUEST) > 39)
The other spot shortest-path checks for varbit on that quest is during it's testFairyRings()
https://github.com/Skretzo/shortest-path/blob/31bee6fef5966b367c2c2bab43144aef564af9ea/src/test/java/shortestpath/pathfinder/PathfinderTest.java#L117 which wants the status to be 100, i think 100 means it's fully done.
39 might be the varbit value of the quest that is the point where you can use the fairy rings
or rather it was? not sure.
haha, yeah, I'm looking into why shortest path isn't offering me ring paths, when I have unlocked them (but not finished the quest)
guess I have to set up devtools
that channel was the correct one to ask unless you want to try the varbit value yourself
that looks like a test, setting up a fake account which has completed the quest, I think
yeah
is it possible to enable devtools on a .jar of RL?
no
ok thanks
https://repo.runelite.net/net/runelite/client/1.12.14/client-1.12.14-shaded.jar
java -ea -jar client-1.12.14.jar --developer-mode
i suppose that would work
Type
Incorrect behavior
Operating System
Windows
OS Version
Windows 10
Bug description
The scrollbar in the tag tab menu does not extend beyond the first page, making items that extend beyond the initial page inaccessible.
Screenshots or videos
RuneLite version
Runelite version: 1.12.14
Launcher version: 2.6.7
Logs
launcher.log
[client.log](https://github.com/user-attachments/files/249...
yippee the scrollbar issue has found its way into the tag tab tab*
I'm a dumbass, I didn't have the staff equipped... all I had to do was read one more line of code
what is the action text on the top of the screen called? is it a widget?
no, is just drawn in engine
What exactly are you looking for? All the information displayed in it is available
I want to hide it.
i htink you can disable it with a chat command
yeah, ::mouseovertext iirc
There's also a hub plugin
or a hub plugin that types it
guessing that plugin just invokes the command on startup lol
Yep
@Override
protected void startUp() throws Exception
{
clientThread.invokeLater(() -> {
if (client.getGameState() == GameState.LOGGED_IN && !mouseoverTextDisabled)
{
mouseoverTextDisabled = true;
client.runScript(49, "::mouseovertext");
}
});
}
yep
When I log this message, the text is cut off part way through: You rub the Amulet of Nature, which says... <col=003300>'I am bound to your hardwood patch near the Fossil <col=003300>Island camp. Your patch is growing nicely, free from <col=003300>disease and is a.
Is it hitting some sort of max message size or am I doing something wrong?
yeah, 200 is a hard limit that chat messages have
Does that mean the rest should come in a second message or something? How can I handle this?
or well i'm confused, they send that as a chat message and a dialog?
IDK what I'm doing to be honest. Maybe I should be checking a dialog instead?
probably yeah, they have to manually split up messages the engine doesn't do it
so you just found a case where they didn't do it 😛
OK I'll try that. Thanks 🙂
The dialog now comes through as chat messages too for a reason I never figured out, but that is limited in length yeah
What's the best way to determine what widget a given dialog is? Or maybe a better question, what's the easiest way to read the text out of that box?
Use the widget inspector
Ok so I found the widget and I'm listening for it in an event like so:
@Subscribe
public void onWidgetLoaded(WidgetLoaded event) {
if (event.getGroupId() == InterfaceID.OBJECTBOX) {
Widget dialog = client.getWidget(InterfaceID.OBJECTBOX, 2);
log.warn("object box just opened with text: " + dialog.getText());
}
}
But the text is empty: object box just opened with text:
Am I doing something wrong or do I need to wait for the next tick or something?
defer it a client tick; the widget text is not set at the same time the widget loads
clientThread.invokeLater() is how that's usually done
I want to add Amulet of Nature updates to the timetracker plugin. Recently I've been running Kronos nonstop which has caused my tracker to get out of sync constantly. I'd like to be able to detect when a step is skipped and update the tracker by rubbing the amulet. I think I know how to do this now, but I don't know how to handle the 3 hardwood patches on fossil island because they all show the same location name on the amulet's text. I can probably make a best effort to update them or just skip the update for these patches. How does this sound?
honestly that bankground typo seems correctly funnier
Curious if anyone here knows under what HiScores category the Deadman Annihilation game mode that starts on Friday is under? Always unclear if it’ll be seasonal or tournament
i think its tournament, at least thats what i set it up for
Type
Incorrect behavior
Operating System
Windows
OS Version
No response
Bug description
Using Item Charges Improved, the overlay number for the plank sack reports a consistent number 2 less than the actual contents. All other functionality seems to be working fine, but it is 2 too low at all times. When full (28) the overlay reports 26, and so on for lower values. Checking the contents with right click does not adjust this number to the correct one.
Screenshots o...
Support for hub plugins should be directed to the author of the plugin.
You can find the support link by searching for the plugin in the Plugin Hub panel and clicking the ? button on the plugin, or by right-clicking the plugin in the plugin panel and clicking the Support menu option.
I'm working on a DMM/Leagues tracker and the achievement diary tasks completed Varbits are not known according to my research.
Curious what you guys think: Could it make sense to "crowdsource" from plugin users to send changed varbits on completion of a tas? I'm thinking users would need to turn it on/off when completing a diary task.
Doesn't wikisync track diary completion?
I doubt that we don't know what they are tbh
Yeah but not specific tasks according to my knowledge
Quest Helper can detect whether parts of diaries are done, so it's definitely available
by the look of it, the Varplayer is a bitfield and each bit that is set is a specific diary step that's done
Since they cap out at 32 bits long, there's usually 2 Varplayer entries per diary
@restive garnet Thanks so much! I was confused because some regions (e.g. Desert) use a VarPlayer bitfield like DESERT_ACHIEVEMENT_DIARY, where each bit = a task. But Karamja uses separate Varbits (VarbitID.ATJUN_*) for each task, sometimes as counters (e.g. ‘<= 4’ bananas).
Yea, Karamja is the oddball one because it was the first
Perils of a 20+ year old pile of spaghetti 😄
Hey folks. Is there any solid guide on plugin development?
Was giving this one a look but cannot reproduce on my mac.
Music by: https://www.youtube.com/c/OSRSBeatz
Support the runelite project here: https://www.patreon.com/runelite
I want to say a big thank you to the runelite team.
The documentation that they make is awesome! I used their documentation to make this video!
Here is a link to that: https://github.com/runelite/plugin-hub/blob/master/README.md
C...
It's all fun and games until java gets thrown into the mix, I'm a python person.
How to develop plugin-hub plugins: https://github.com/runelite/plugin-hub/blob/master/README.md
❤️
I'm running into the dreaded
Caused by: java.lang.IllegalAccessError: superclass access check failed: class net.runelite.client.ui.OSXFullScreenAdapter (in unnamed module @0x53251a66) cannot access class com.apple.eawt.FullScreenAdapter (in module java.desktop) because module java.desktop does not export com.apple.eawt to unnamed module @0x53251a66
Makes it so I can't even run the example repo. Is there a workaround for mac or do I have to build and test another way?
we have an entry on it in the core build guide at least
dunno about if its referenced anywhere in the hub
tbh though you should just use java 11
Hah, setting it to java 11 did solve it.
Thank you!
4408d64 API docs for 1.12.14.1 - RuneLite updater
205a25f Release 1.12.14.1 - RuneLite updater
I have a script that pulls the newest runelite tag automatically and it broke my plugin hub plugins lol. How do I find the latest tag that the plugin hub has plugins for?
There is a window in between when we push a tag and when the pluginhub finishes deploying that you probably hit
Probably you shouldnt be using tags to determine what the live version of runelite is since it often times wont really match
how long does the full phub rebuild take
https://static.runelite.net/bootstrap.json has the version in it, use that
Which java profiler (win11) do you guys like to use? My JProfiler trial is over 😢
visualvm
Oh no. Can anyone advise on what to do here?
https://github.com/runelite/plugin-hub/actions/runs/21490592880/job/61911756504?pr=10378
Absolute java noob trying to get a plugin in. It works locally but it seems I did something wrong.
you added new dependencies on jsoup but they aren't trusted
can you use jsoup-1.13.1 or is it too old?
alternatively are you familiar with "not enough runes" plugin
That works! Updated. Thank you!
I am, yeah! It had been referred to me when I talked about creating this with my clan. Not quite what I'm looking for although functionality is very similar for now
Want to take this one to a place where it is aware of the account's restrictions and allows you to filter for viable methods and locations
But that's for tomorrow 🥲
ok
Thank you for the help, this is quite exciting ❤️
also are you aware that you can append ?action=raw to a wiki page to get it as text
which would remove the need for jsoup entirely and would make it easier/quicker to review (and easier for you to maintain)
you also don't need an executor if you use enqueue
Made the change, thanks for the heads up
This.. will have to be studied. I had no idea you could just ?action=raw.
For now I've changed it to ?action=render which appears to already be a step up from what I was doing, but I'll have to work on a full rewrite to get rid of the jsoup.
not a requirement but if you refactor out jsoup and ping me i'll review it for you rn because it really will make everyone's lives easier
otherwise i'll just get to it in whatever state it's in next time i hit the new plugin queue, probably a week or so
Thanks again @restive garnet for helping me create my first (DMM) plugin! Just finished it (for now at least)
Just did my first PR (#github message) If anyone has any tips on improving the review process that would be appreciated, I already split the project into 16 clean commits and added docs like mermaid diagrams etc
I hate to be the bearer of potentially bad news, but your plugin is a huge amount of code, so I wouldn't expect reviews coming in quickly for it
i think you need warning=this plugin sends your ip to a third party site disclaimer too
your ai code guidelines are also mildly wrong and providing an ai generated review process isn't going to be looked at probably
Thanks for the feedback
Understandable, I tried to split it up already. And wasn't expecting it befor this DMM release haha, maybe the next one
You'd be surprised how often people expect immediate reviews
at 20k lines of java i am effectively never going to review this. I don't really review new plugins much more than 5k LoC
like this is just wrong and why is your project in dreambot https://github.com/TheGroundedDutchman/DMMScape-RL-Plugin/blob/main/docs/DEVELOPMENT-SETUP.md
the average plugin submitted is maybe 2k. so you are 10 times that. that's kind of a big ask for volunteers
.... is this true?
it is not (at least i don't think it was a few months ago)
Yeah I tried to split it up like this
this doesn't help the reviewer at all. your code is the only thing that matters
i'm fairly sure someone would report that
and you have too much code for me to look at
Ah I don't know why it wasn't working for me but this helped
this looks like you found a botting guide and fed it to an llm
not a great look really
Also am I blind or is it missing the test fixture
Well I appreciate all the feedback, hoping to contribute to the opensource community and people could also use my code. (that's why the website I linked this plugin to is also open source, not sure if I can mention it here)
...
i mostly just want to you to acknowledge what i'm saying about the size, like, you understand this could just rot in the plugin queue for years, right
like the chance this gets looked at is 0% effectively
Hmm Alright, would you recommend downsizing to core functions first and then iterating on that?
Or maybe just sending data to the webapp instead of all the plugin ui?
Honestly, your first step would be to start again using the proper plugin template, so you're not missing key parts that are required for it to function correctly
Good one!
The template also gives you a proper way to test the plugin during development that doesn't rely on sideloading
you can do whatever you want, i'm just trying to be upfront about setting expectations here because we have had a few "mega" plugins in the past like this where the author basically doesn't understand that it's too big to be looked at and they get upset and feel like they're being ignored
and you are in fact the record holder for largest plugin submitted with this
haha I do find that funny
But good points, I will take your feedback serious and improve/work on this to minimize the size and use the proper template
Yeah this won't be something I can get to that quickly.
Gonna leave jsoup for now. Thanks for the sugestions!
I'd have to fire a couple of secondary requests for those sections
if you're going back to the drawing board on this then honestly just close it for now please
and resubmit when you have something that's well-formed and manageable
FYI i typically just add this myself these days since it's part of the manifest file
we honestly should have always
people that do it themselves try to put stuff like "but we don't log it trust us bro"
which we obviously can't verify
In case anyone was curious where the 20k lines came from
So yeah a lot of data I could also store on the backend, but I will likely completely remove UI and focus only on sending data. Or maybe contribute to other data tracking plugins
like, the UI could probably be added in a separate update later
You already have a web UI. You're probably better off just leaving anything non-essential in your web page only. Thats what I do with mine (but then again no one uses my plugin so what do I know)
And you can save at least 25 lines of code not having two separate auth schemes for the API you control <.<
For what it’s worth I’m not opposed to adding this sort of thing to NER (though I’m in the middle of a bit of a rewrite myself)
Also I was pretty sure the wiki doesn’t want more live lookups in plugins, and would rather people use cached/scraped data, but that’s a question for @unique tusk probably
if possible yeah try to cache what you're doing, it's really easy to have something inadvertently make an expensive-ish wiki API request for every time <some very common event> happens
I think they’re just html parsing item pages on search so might not be a big deal
Will definitely look into caching. Plugin shouldn't be spamming the wiki but it still makes sense. Now I've learned how to actually make a plugin and test it, the sky is the limit. That and my poor java skills.
If my plugin downloads stuff from github during its startup call when a user starts the client, is it possible for that to block the plugin from automatically updating?
i am pretty sure it checks its hub manifest (ie it would grab any updates) before it tries to start any plugins
what he said
Hmm okay. I guess I have a surprising number of users who never restart their clients then lol
that is overwhelmingly common for this playerbase yeah
many people don't close the client unless forced to
That makes a lot of sense actually
out of interest, why does sometimes the Runelite Plugin Hub Checks on github pass, and sometimes fail saying review required.
Not that its important as they all require review anyway, just curious
Different levels of review
Some things they do are bit more sus that others
So they need more review
Sus is more like file io or what ever
ah so theres trigger points that need double checking sort of thing
Not sus as in bad lol
naa i get it haha, makes sense
amogus sorta fried terminology
Well, sus has always been short for suspicious, so in a sense it's not really changed anything
if you're using certain APIs then you will get into that state where it requires maintainer review. it'll always be in that state even if you push updates that don't add any new "flagged" APIs. file i/o and networking are the two main things that flag a plugin
in modern times it doesn't mean much because every active reviewer has maintainer/merge powers on phub
Saw a video of someone using player outlines to cheat 😔 people have to ruin everything
Off the top of my head, I don't remember which exactly, and I don't think I have any intermediate files anymore, but I'll try my best.
For the buttons (1130, 1180 and 1181), I used 5767 and 5769, but had to resize them (40x40 down to 33x36).
For the little minimap orb (1438), I took 5794 and sized it down from 34x34 to 30x30.
For the hp/prayer/etc orbs, (1071 and 1072), I took 5791 and 5792, then I edited them best I could so that the label part on the left was lower down to match th...
?
I'm rebuilding the client to check some stuff with my interface PR. You guys finally moved away from "need more maven"?
Fixes #19722
When using special attacks with thralls active, the plugin was sometimes counting thrall damage as weapon damage when both hit on the same tick.
This occurred because thralls produce DAMAGE_OTHER hitsplats, which the previous isMine() check didn't filter out. The fix adds an isOthers() check to exclude hitsplats from thralls and other non-player sources.
Added test case to verify thrall hitsplats are correctly ignored.
I now remember why the padding is necessary, the actual widget size is 182 by 166, so giving it a 181x165 does this, duplicating some pixels. That's why I added the padding.
<img width="153" height="88" alt="image" src="https://github.com/user-attachments/assets/2bd58053-61a7-4acd-94d4-d530ac190b6d" />
Interestingly, I noticed the 2010 interface style avoids this duplicated pixel issue by just snipping off some pixels, which does look slightly off. For a different PR, it may be worth fixi...
see this is the absolute worst type of person that exists imo
like, why
why do people do this
what if we just turned off pull requests