#development

1 messages · Page 2 of 1

ember flareBOT
trim pumice
#

my bad

sinful lava
#

no worries at all, thanks for fixing it/noticing the bug and thanks for not including 900 lines of unrelated things with the fix 🙂

trim pumice
#

although java and game development isnt my stack (C# .net, typescript, angular/react is) , ive been a dev for 10 years so i get it haha 😄

muted bone
#

it's okay to do two seperate prs for the same plugin yea?

sinful lava
muted bone
#

not necessarily at the same time

sinful lava
#

You can update your plugin through PRs as many times as you want - if you have multiple PRs open for the same plugin you are going to run into merge conflicts so I'd avoid it unless you have a good reason for it

muted bone
#

one is just a small diff update (which I imagine would be reviewed first) second is a large refactor

sinful lava
#

The problem with having two PRs open at the same would be that a plugin reviewer might not necessarily know which one to handle first, so if you can avoid it (which it sounds like you can), I'd suggest opening the small diff update PR first, waiting for it to be merged in, and then making your PR with your large refactor.

#

If you do decide to have multiple PRs open, it would be nice if you use the "Draft" feature for the PR that you want merged in later (in this case, the large refactor one)

muted bone
#

Would a comment suffice or would you rather I just keep it in draft?

sinful lava
#

I'd rather you keep it as a draft, and then when it's ready to be merged in you mark it was ready to be reviewed again. That way no one goes into reviewing a diff that will change by the time it's actually ready

muted bone
#

sounds good, thank you!

dusk ridge
#

are singleton hub plugins generally frowned upon?

#

as in, making one that expands on a native plugin but both cannot be used in tandem

#

or alternatively has another plugin as a dependency

worthy sparrow
dusk ridge
ember flareBOT
lone crow
#

Is it possible to have a plugin interact with another external plugins overlay?
Trying to see if I can have an overlay which would be locked to being on top of another plugins overlay (if present)/be able to move with it if dragged.

If this is done anywhere, if I could get a plugin name where I can check out its implementation I would really appreciate it

upper valve
#

i don't believe so because you can't really access other overlays at runtime

odd oasis
upper valve
#

reflection is banned

odd oasis
#

ur banned

upper valve
#

lol

lone crow
#

Ty for the info

grim isle
#

thinking about the ping stuff more, I'd think it might be worth trying to keep a long standing connection for the current world, but not sure if we there's any valid message we could use for an in-band ping/pong to measure the rtt on

#

Kernels generally have to keep track of stuff like the rtt for congestion and window tracking, so if we had a long standing connection we could query that information for the one socket, might be more accurate but maybe not worth the hassle

#

If no one beats me to it, I can try writing a small tool for using this api for doing some manual testing when I'm off work

rancid marten
#

yeah that would he helpful

#

you could probably just vibecode that tbh

#

just like a cli app that opens a connection and then dumps tcp stats

grim isle
#

you might need some active data on the line for the stats to be accurate

rancid marten
#

yes

hardy anchor
#

Apologies if this has been asked already, but is there a way to set a music track to begin playing? Came across this and I'm assuming it's still an open request, I just wanted to double check here: https://github.com/runelite/runelite/issues/10692

GitHub

Hi, new idiot here. I'm looking to make a plugin that replicates the 2008 music update in RS3. I figured that would be doable as a plugin because sounds have no reason to be handled server side...

rancid marten
#

theres been no work twords it

granite quest
grim isle
#

interesting

rancid marten
#

thats from WSAIoctl()?

granite quest
#

Yup

rancid marten
ember flareBOT
ember flareBOT
ember flareBOT
#

Type

Incorrect behavior

Operating System

None

OS Version

No response

Bug description

When selecting quick-deposit on the ironwood cargo hold with Item Count turned on in the Sailing plugin:

  • Expected behavior: item count increases by the number of salvage deposited
  • Actual behavior: item count is unchanged

Item count only seems to change when:
A) opening the cargo hold interface
B) crewmate deposits salvage (increments the incorrect count by 1)

Screenshots or ...

ember flareBOT
rancid marten
#

Not in runelite but i just made a small c++ app

#

it definitely seems to work

granite quest
#

I was running into trouble using it on the sockets created by the runelite client specifically

rancid marten
#

were you using jna?

granite quest
#

yes, but to be clear youre referring to using WSAIoctl() correct?

rancid marten
#
    TCP_INFO_v0 info;
    DWORD bytesReturned = 0;
    ZeroMemory(&info, sizeof(info));
    DWORD tcpInfoVersion = 0; // Version 0 of TCP_INFO

    int rc = WSAIoctl(s,
                      SIO_TCP_INFO,
                      &tcpInfoVersion, sizeof(tcpInfoVersion),
                      &info, sizeof(info),
                      &bytesReturned,
                      NULL, NULL);
granite quest
#

Yup that looks like it

rancid marten
#

also id like to mention copilot had a terrible time with this

#

could not figure it out

#

i dont know why it wouldnt work on the normal Socket() stuff

granite quest
#

I spent a lot of time with copilot getting it to work lol

rancid marten
#

whats your code look like?

#

also I think you have to use reflection to get the fd from the Socket which is sort of a problem

granite quest
#
                sock,
                SIO_TCP_INFO,
                version.getPointer(),
                4,
                info.getPointer(),
                info.size(),
                bytesReturned,
                null,
                null
        );```
#

tcpInfoVersion0

rancid marten
#

what is sock here?

granite quest
#
UINT_PTR sock = new UINT_PTR(handle);```
ember flareBOT
#
[runelite/static.runelite.net] New branch created: wiki-data-2026-01-09
rancid marten
#

this seems ok i guess assuming handle is right, idk

granite quest
#

I’m pretty confident the handle is correct too. I ran this one on the sockets created in tcpPing(). The handle I got for the live game connection could be wrong

rancid marten
#

but it doesnt work with the tcpPing socket either?

granite quest
#

Nope I ran into the same error operation not supported on both. Apparently that error can occur from issues with the socket itself

rancid marten
#

idk, it should work

granite quest
#

I may spend some more time attempting to get it to work but you were right it’s been neither easy or intuitive

ember flareBOT
quiet raven
#

I tookover a plugin a couple months ago and need to fix some more stuff, working with it is really annoying because they used spaces. If I submit a pr just formatting it like how i want the diff will look huge, will it take forever to get reviewed

quick path
#

if it's just converting spaces to tabs, just mention that we should view the diff with ?w=1 to skip whitespace-only lines

thorn grotto
#

spaces > tabs

quiet raven
#

theres other changes like opening brackets on a new line, but hiding whitespace changes removes like 99% of the diff so thats fine

ember flareBOT
#

This pr has the same fundamental flaws as your hub pr and seeing as it looks LLM generated, I'm not sure you understand what I mean.

I appreciate the feedback, but I'm having trouble understanding the technical issues you're describing. I'm not experienced with RuneLite's internal architecture. I do not know the delineation of what "core" means in terms of rendering encapsulation. I have no clue how a complex feature would function without some level of UI housed in a side panel, so, I s...

upper valve
#

formatting prs are mostly whatever just DON'T like change plugin behavior and reformat in the same submission

#

also you say it "will look huge" but what is that in terms of LoC (like without the w1 even)

reef badger
#

which llm is stuck in 2024

kindred sun
#

Does anyone know where I can find the crowdsourced data for desert heat tiles? I'm interested in making a plugin outlining the borders between desert heat tiles and safe tiles, if that doesn't already exist.

thorn grotto
#

you could ask in the wiki discord

#

unlikely they have a complete map though

kindred sun
#

Yea I was thinking if I had a bunch of data on which tiles had instances of desert heat, I could draw a rough outline at least

glass sandal
#

There's this crowdsourced image. But we don't have good tile boundaries

quiet raven
granite quest
# rancid marten idk, it should work

you were right. It works. I'm seeing ping numbers consistent with the ones calculated in tcpPing() using SIO_TCP_INFO. I'm also seeing accurate ping numbers from the active game connection using SIO_TCP_INFO. I'm a fool and I had the wrong SIO_TCP_INFO control code 🤦‍♂️

ember flareBOT
ember flareBOT
upper valve
#

@tribal jungle nobody has time to look at a 10k diff, you can either figure out how to roll that out in multiple PRs or basically let it rot

tribal jungle
upper valve
#

you're welcome to submit many nk line diffs in a row that's no problem

#

5 2ks etc

tribal jungle
#

👍 will split it up

#

closed it for now

arctic surge
#

Is there a particular reason why the over-culling issue with expanded camera limits has gone unfixed for years? Is it just lack of interest/niche problem (fixed-only + expanded camera limits only perhaps)? Or is there a reason why it can't be fixed/hard to fix. I might be interested in fixing it since it just seems like a calculation error in what should be culled.

rancid marten
#

that is sort of a loaded question with some assumptions lmao

arctic surge
#

yea absolutely, please correct me

rancid marten
#

in general, we are not doing things like spite not fixing your pet problem because we don't like you or something

#

i'm not aware of this problem, and even if I was aware of it, it cant be older than ~50 days

arctic surge
#

hmm ok, maybe there are multiple culling problems, because I've seen culling issues on runelite for years

#

it's possible that I've conflated the two and they are different in nature, and the previous one is already patched

rancid marten
#

ok well ive never seen one like that

#

all of the culling and rendering code got replaced 50 days ago, none of it is the same as before

#

or works similarly, really at all

arctic surge
#

ah I see, now that I think more about it, I think the culling issues I'm recalling from the past were tile-based culling maybe? and this seems to be chunk based I think

#

anyways mb for coming off the wrong way with my question, im not the best at expressing what im thinking

#

it looks like my assumptions were incorrect on this one too, it has nothing to do with camera plugin or fixed

restive garnet
#

You get bonus points for not feeding your responses through an LLM first 🙂

ember flareBOT
#

Type

Incorrect behavior

Operating System

Windows

OS Version

Windows 11

Bug description

There appears to be a large section of the world (a chunk I believe) getting culled that shouldn't be. This happens regardless of Camera plugin being on/off, and regardless of fixed/resizable.

Screenshots or videos

https://github.com/user-attachments/assets/c0c7e8b6-551b-4026-964b-8e306d0a0bfb

RuneLite version

Runelite version: 1.12.11
Launcher version: 2.7.3

Logs

_N...

teal cairn
#

What's an easy way for a plugin to check whether a certain other external plugin is installed before checking the config values of that plugin?

glass sandal
#

I believe quest helper does that if you want to look at their code

teal cairn
#

Thanks! I'll have a look.

#

Found it, ExternalPluginManager's getInstalledExternalPlugins() method. Thanks for the tip 😄

stuck shale
#

i think you could also use configmanager to see if a plugin is turned on (meaning it's installed)

teal cairn
#

good shout, didn't know that would work too in case it's not installed

severe grail
#

So what’re you writing

#

I wanna peep the source

#

@teal cairn

teal cairn
#

Don't judge my terrible coding skills, this is my first (and probably last) java project.

sick vessel
#

yo i wanted to make a plugin that shows which ranks need to be changed in a clan, based on input from an external api. It highlights the names and shows the rank they should be in the clan members list.

I assume there needs to be a warning for using external websites, but i dont think theres anything else wrong with this. Would it take long to get approved for pluginhub, if the plugin is ok?

quick path
#

that sounds fine otherwise, yes

sick vessel
#

Cheers. Ill ask a friend to look it through as ai made the whole plugin. Seems pretty solid ngl

upper valve
#

how long your plugin takes to get approved is entirely dependent on how big/complex it is, which we don't really know until you submit it

sharp hawk
#

Hey, I found this issue with the latest snapshot, it appears that the portal to GotR was transformed into a stool, the stool highlighted in the screenshot is said portal and even its clickbox is of the stools

This happens if you log into the basement with or hop worlds while inside the basement. Is this something you were aware of happening? I have confirmed that it does not happen on 1.12.11

topaz pierBOT
#

To enable safemode

Windows

Run the RuneLite (configure) shortcut from the windows start menu
Tick the Safe mode box, save, launch RuneLite the way you normally do.

Mac

In Terminal, run
/Applications/RuneLite.app/Contents/MacOS/RuneLite --configure
Tick the Safe mode box, save, launch RuneLite the way you normally do.

sharp knot
#

Does it happen in safe mode?

sharp hawk
#

I should add that this is run through an IDE isnt it always in safe mode in that case?

oak rock
#

Lol no

reef badger
#

it is not always safe mode

sharp hawk
#

ok I can do that then and report back, sorry not a developer 😓

#

yes it still happens in safe mode, if this is correct

amber rampart
#

no, you would pass --safe-mode in ij

#

but it will be a gpu only bug

#

so it won't happen in safe mode

sharp hawk
#

oh it also says in the titlebar 🙈

#

Its rather scary that its using the clickbox of the stool no? If it was just the objects model being swapped I wouldnt be worried but the clickbox itself is that of the stools rather than the portal

amber rampart
#

the clickbox is only from the model

sharp hawk
#

I was under the impression that the client was not allowed to modify clickboxes in any way, and its definitely different, if theres no issue here sorry for wasting your time

sharp knot
#

This seems like a vanilla bug then probably

amber rampart
#

there is an issue, its not supposed to be a stool

#

but since its model changed, the clickbox will change by definition

sharp hawk
ember flareBOT
#

Problem Statement:

With more servers soon to move to AWS and AWS not supporting ICMP pings we are concerned with a potential 2000 new TCP connections opened/closed per second per server. The solution should treat the 3 types of pings (pingInitialWorlds, pingCurrentWorld, pingNextWorld) separately.

Solution:

Modify Ping.tcpPing() to introduce a cooldown on a per world ID basis via a hashmap. The cooldown is set to at least 5 seconds but in reality the cooldown will be longer as ...

sharp hawk
#

Well, its specifically only happening on 1.12.12-SNAPSHOT anyway, while 1.12.11 is normal
Hopefully my report is useful in some way, as I say I'm not really a developer I just help out around 117HD doing json work so I'm not really aware of how important an issue this would be

granite quest
rancid marten
#

it definitely shouldnt be a stool, ill look at it

rancid marten
#

or well i am confused how you managed to get to this from the entire rtt discussion we've had

granite quest
#

I pushed this as a solution that avoids reflection. Tried to keep changes small since what we've discussed would be the long term solution

rancid marten
#

I really dont like the client doing connect() over and over to the current world to measure ping, theres basically no scenarios where i want to do that

#

even if you are making it every 5s instead of every 1s

granite quest
#

This would only occur on worlds where ICMP fails as a fallback. It's definitely not desired but I'm not sure how to get the active game socket without reflection

amber rampart
#

we can add a FileDescriptor getSocketFD() to client

rancid marten
#

yes. regardless you have to use reflection to get the SOCKET off of the FileDescriptor so no matter what we're using reflection here

#

which, is fine. its sort of annoying for jdk17 but luckily we dont use that sort of

granite quest
rancid marten
#

its pretty obviously just not possible to do it without using native code or reflection?

#

im fine with reflecting into it and then figuring out 17 later I guess.

#

a couple other thoughts 1) Ping should not be keeping track of rate limiting state like this, whatever is calling it should be 2) ideally we can herustically detect the aws servers maybe by detecting if the servers have >1 ip or something

#

although I guess this approach would make it work if the user just happens to be on a network which filters icmps which does sometimes happen

#

which is nice

granite quest
rancid marten
#

I think it should probably prefer icmp

#

tcp rtt and ping isn't really the same thing

granite quest
#

Yes they measure different things. I will of course include some statistics between tcp rtt the current ICMP ping when the time comes.

rancid marten
#

in the case of the new jagex servers tcp rtt is the least-worst option so it doesnt really matter how incorrect it is

#

but the servers which can do icmp we should do icmp to

amber rampart
#

imo we should do rtt on all of them, otherwise they are uncomparable and that is weird

rancid marten
#

oh hmm

#

that is a good point

amber rampart
#

also I can do the linux and mac impls if you want

rancid marten
#

can we show something visually to show if it is a ping or rtt?

granite quest
#

would the users understand the difference?

rancid marten
#

yeah i was just typing that, no not really

#

i think that would be ok as long as we change our labeling (like the world hopper table header, config etc) from ping -> rtt

#

or RTT (ping) or something

#

hm

granite quest
#

but i guess we're trending towards that regardless

rancid marten
#

ive 0 idea what time of timespan they are thinking about in replacing their servers with aws

#

jagex tends to move slow, it might be never, idk

#

or like only in non-eu/non-us places

#

doing a connect() to everything for the initial pings seems pretty bad

granite quest
#

I think it'd be best to use your initial suggestion: icmpPing with fallback to tcpPing for pingInitialWorlds, same idea for pingNextWorld, and RTT for pingCurrentWorld. We'll just have to accept the discrepancy of ping vs RTT

#

Also, is runelite supported on older windows versions than 10?

rancid marten
#

7 is supported

granite quest
#

I believe SIO_TCP_INFO was added in windows 10

rancid marten
#

yeah

granite quest
#

Hm ok. Using TCP_ESTATS_TYPE is available on vista+ but requires admin so I assume its not appropriate

amber rampart
#

as long as it doesn't crash its fine imo

rancid marten
#

yes, 7 doesnt matter, i think it might be all bots and venes

#

its supported as in it sort of runs (eg the jdk supports it) but its not something we care about particularly

ember flareBOT
ember flareBOT
ember flareBOT
mental lagoon
#

Have we heard any updates on vanilla client plugins? I was talking with mod gengis about it a while back… but it seems like it got put on hold?

#

Just excited to port my plugin to mobile 😂

rancid marten
#

no

upper valve
#

winter 20127

thorn grotto
#

20427 WAYTOODANK

ember flareBOT
#

Type

Incorrect behavior

Operating System

Linux

OS Version

Fedora 42, Linux, kernel 6.17.12. i3/x11, nvidia 580.119

Bug description

The south eastern quadrant of Prifddinas seems to not work properly with the roof removal plugin. From a distance the roof removal works as expected, like if I'm running to the bank, but once I enter the quadrant it stops working and the roofs are always visible regardless of settings.

My home is in Prifddinas but I don't need to access my ...

reef badger
#

More roof removal bugs yippee

ember flareBOT
#

Type

Incorrect behavior

Operating System

None

OS Version

No response

Bug description

For this medium clue step, the Clue Scroll helper states "Baxtorian Falls (Bring rope)". Completing the medium Kandarin diary adds two permanent rope objects to the area that can be used instead, making it unnecessary to bring a rope.

Screenshots or videos

RuneLite version

RuneLite version: 1.12.11...

ember flareBOT
worn lion
#

🐇 someone submitted an issue to my plugin saying it doesnt turn on for them but i have no clue why it wouldnt, it works just fine for me could someone else see if it works? its called Limey Tile Man, and its on the plugin hub :3

quick path
#

you can try getting logs from them to figure out why

worn lion
#

oh true true

#

how do i ask for that tho? like where is the log located so i can ask them for it x)

topaz pierBOT
#

To find the logs, you can do one of the following:

  • If your client failed to open, click the Open logs folder button.
  • Open the screenshot directory by right-clicking 📷 Camera button, navigate 1 directory up, then open logs folder.
  • Navigate to %userprofile%\.runelite\logs on Windows or $HOME/.runelite/logs on Linux and macOS.

Upload the log files named client and launcher by dragging them to Discord. If there are files prefixed with jvm_crash dated from today, upload them too.

worn lion
#

🐇 thank you guys

ember flareBOT
hollow lintel
ember flareBOT
ember flareBOT
zenith sundial
#

been rummaging through the api docs and cant seem to figure out how i would get the model id from a graphics object.
i want to use client.loadModel(int id) but Model doesnt have a getId() function.

After loading the model i want to spawn it using client.createRuneLiteObject(). Currently I am able to spawn the object by fetching the model using client.getGraphicsObject(). But I want to spawn the object when I want, is this not possible? 🤔

please let me know if there's a plugin code i could look at to understand 😄

topaz pierBOT
#

Some hub plugins failed to build against the latest RuneLite version, this means that they're not available until the owner updates them.

#

We don't provide builds of pluginhub plugins for snapshot versions. Usually you can pass -Drunelite.pluginhub.version=<current RL version> as a VM option to load the plugins built against the release into your build, which will work if there are no ABI changes. If there are ABI changes, build the plugins yourself and place them into the sideloaded-plugins directory when running in developer mode.

shadow patrol
#

Question, do you have to use Jetbrains or could you use VS code?

stuck shale
#

You can use either

shadow patrol
#

just need to have the right JDK right?

stuck shale
#

The build guide might look a bit different

#

But it can’t be too hard to set up because the amount of ai generated from vs code that people submit

shadow patrol
#

its helpfull when vibe coding but only if you get what its doing.

ember flareBOT
ember flareBOT
#

Type

Incorrect behavior

Operating System

Windows

OS Version

Windows 11

Bug description

Item Charges plugin is not showing potion doses for Extended Stamina potions. Not sure if this is isolated or an issue with the new sailing potions

Screenshots or videos

RuneLite version

RL version: 1.12.11
Launcher version: 2.7.1

Logs

client.log

[launcher.log](https://github.com/user-attachments/file...

ember flareBOT
ember flareBOT
ember flareBOT
ember flareBOT
ember flareBOT
glass sandal
#

ItemComposition#getHaPrice() says "Get the high alchemy price for this item. All items have a high alchemy price, but not all items can be alched."

From what I can tell if cache param 295 is 1 then the item is not alchable. If this is the case, would it be worth either setting the haPrice to 0 or somehow exposing that?

amber rampart
#

you can call getIntValue on ItemComposition to get at it if you want. I wouldn't be opposed to changing getHaPrice though

glass sandal
#

It seems like it would be an improvement to things like the Item Prices plugin among other things.

ember flareBOT
ember flareBOT
upper valve
#

bingo chapter 8 has hit the second tower

rancid marten
#

I've seen some other projects have essentially a canned response they give to prs that are ai-written

#

maybe it would be good to figure out some wording for that

rugged pivot
#

“begone sloplord”

rancid marten
#

naturally i asked chatgpt to write me one

#
Our project does not accept AI-written pull requests—not because we object to AI use in general, but because it adds friction without adding value. If we wanted AI-generated code, we could generate it ourselves in a form that matches our expectations and constraints. When a contributor submits AI-written code, the maintainer still has to do the same work: understand the intent, verify correctness, and ensure it fits the project. In practice, this often takes more time than simply writing the correct solution directly.

Additionally, reviewing AI-generated submissions tends to introduce an inefficient feedback loop. Review comments are frequently passed verbatim back to an LLM, which produces another revision that still requires careful human verification. This extra “hop” slows down iteration and diffuses responsibility for the code’s correctness. We value contributions where the author fully understands, owns, and can directly reason about the changes they submit. For this project, human-authored code leads to faster reviews, clearer communication, and higher overall quality.

wow

upper valve
#

are you saying you're in favor of rejecting ai hub prs?

#

because that is most of them

rancid marten
#

no those are fine

upper valve
#

ok

rancid marten
#

mostly im looking at #19780

upper valve
#

yeeeeeeaaaahhh

#

i mean i think the above statement is pretty much on the nail

rancid marten
#

looooool

upper valve
#

if someone is trying to shove in contributions through an LLM without any understanding of what's going on, that adds literally zero value on top of just being fucking rude

rancid marten
#

llm code is a lot worse than normal human code since it will also lie in comments in a way that you wouldnt get from humans

#

like this is just a lie

#

like it makes sense to check them in render order

#

but this just isnt at all how you do that

#

and even if it was, its also missing locking, lol

upper valve
#

i mean it would maybe be different if the person actually knew code and like the ai was just to sort of bootstrap it

#

but i don't think that is the case here

buoyant pendant
#

For anyone who uses IntelliJ, it happens quite frequently that it forgets all of the imports, as such. I thought that "sync gradle project" would fix it but it doesn't. Before, "repair IDE" would fix it, but it doesn't work anymore. Does anyone know what to do?

worthy sparrow
#

switch branches, wait a second and switch back or close and reopen

buoyant pendant
#

Whenever I use the "run" command it gives the following error:

Execution failed for task ':run'.
> Could not resolve all files for configuration ':testRuntimeClasspath'.
   > Could not find lwjgl-opengl-3.3.2-natives-linux-arm64.jar (org.lwjgl:lwjgl-opengl:3.3.2).
     Searched in the following locations:
         file:/C:/Users/simon/.m2/repository/org/lwjgl/lwjgl-opengl/3.3.2/lwjgl-opengl-3.3.2-natives-linux-arm64.jar
   > Could not find lwjgl-3.3.2-natives-linux-arm64.jar (org.lwjgl:lwjgl:3.3.2).
     Searched in the following locations:
         file:/C:/Users/simon/.m2/repository/org/lwjgl/lwjgl/3.3.2/lwjgl-3.3.2-natives-linux-arm64.jar

Possible solution:
 - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html

But since I'm not sure what the opengl is trying to do I don't know how to fix it

#

I'm on windows and it's trying to find linux things? Idk

buoyant pendant
amber rampart
#

delete that folder from your .m2

buoyant pendant
amber rampart
#

just deleting the lwjgl/3.3.2 folder should fix it

#

but you can delete the whole thing too

buoyant pendant
#

Thank you so much! When I ran it this time it downloaded a bunch of stuff, I'm guessing some of that stuff was invalid. Perfect!

ember flareBOT
ember flareBOT
tranquil trellis
#

this code isn't mine but in one of my plugins and the projectile.getX1 and getY1 are deprecated. They're used for getting the start position of the projectile. I had a look around and don't really see an equivalent way to do this anymore.

LocalPoint playerLocalPoint = player.getLocalLocation();
int wv = playerLocalPoint.getWorldView();
WorldView worldView = client.getWorldView(wv);
LocalPoint telegrabStartLocation = new LocalPoint(event.getProjectile().getX1(), event.getProjectile().getY1(), worldView);```
neon haven
tranquil trellis
#

ahh completely missed that one tysm

ember flareBOT
upper valve
#

#github message fyi i don't think this is actually 90k java. the diffs for those kinds of plugins got annoying to read and i was meaning to write some sort of greasemonkey to show me a better diff but i just haven't yet

sinful lava
#

cloning this repo took forever LULE

upper valve
#

they probably need to move that static data out tbh

#

they're gonna hit the jar size limit

upper valve
#

hear me out, what if the bot detected duplicate prs and emitted a message

reef badger
#

i literally wanted to make it explicitly say not to do it, not to suggest it

#

but there was pushback

dusky loom
#

@reef badger gave some good feedback on my PR, I am committing into the plugin repository transcript json files for quests.
Those files contain every dialog line for every character which is used to generate the voice over for them.
This also has the bad side effect of polluting the diff when I want to update my actual plugin.
I try to help by separating the plugin changes to actual isolated atomic commits, and then linking those in the PR description, but is there a better way for me to approach this?
I want to make your lives easier when reviewing my PRs.

upper valve
#

how are those transcripts used

#

are they actually in the jar

dusky loom
#

They are used by a cli too within the repo to generate the voiceovers, they are not included within the jar.

upper valve
#

i would rather nothing other than code exist in your thing tbh

rancid marten
#

can you put them in a branch?

dusky loom
#

hmm I'll take @rugged pivot and @rancid marten's advice and move it to a different branch

upper valve
#

probably just do that yeah

rugged pivot
#

you're already doing that for the db and sound files

upper valve
#

and i recognize that will make your pr even bigger but that's fine obv

dusky loom
#

Yeah lol, I will let you know. Thanks for working with me around this.

#

one last big PR to move everything outand then others will be smaller.

upper valve
#

like if you just had a small script and some fixed data i wouldn't care but this is every text in every quest in the game which is not really scalable

#

ping me here when you do it and i'll review it

reef badger
upper valve
#

yeah i mean mostly that he talked to us about it and we know what he's doing

reef badger
#

yeah true

upper valve
#

also FYI in general to anyone submitting plugins -- it is helpful if you have a bunch of extra diff noise like this to just call it out at the top of the PR description so the reviewer has the context going in. i probably looked at this for like 12 seconds originally and just forgot that this was a plugin with a bunch of text so i closed the diff without reading into it

dusky loom
upper valve
#

ok that was faster than i expected

#

i'm not actually at my machine but i will review it tn

upper valve
ember flareBOT
jolly hearth
#

VarbitChanged.getValue appears to return the wrong value for varps? Getting 1 when the real value is 8, for VarPlayerID.PRAYER20 in my example

rancid marten
#

I think if that was broken almost all of the client would be broken, so that seems unlikely

jolly hearth
#

yeah I'm not too sure what's going on, but it's definitely the case for me with my example, I put in a println, .getValue is 1 and client.getVarpValue is 8

rancid marten
#

got an example?

jolly hearth
#
  @Subscribe
  void onVarbitChanged(VarbitChanged varbitChanged) {
    if (clientState == ClientState.LOGGED_OUT) {
      return;
    }

    if (varbitChanged.getVarpId() == VarPlayerID.PRAYER20) {
      System.out.println("PRAYER20: " + varbitChanged.getValue() + " - " + client.getVarpValue(VarPlayerID.PRAYER20));
    }
  }

I take rex pet out of menagerie and put it back in

PRAYER20: 0 - 0
PRAYER20: 1 - 8

updated with a @Subscribe example straight on the plugin

rancid marten
#

I think you also need a && .getVarbitId() == -1

#

the event being fired is for a varbit change, not a varp change, and you are seeing the value of the varbit

jolly hearth
#

interesting... with varbitChanged.getVarbitId() == -1 my logging isn't being hit at all

rancid marten
#

that means that there are no bits in the varp that aren't covered by a varbit

#

it only fires varbit changed with varbitId == -1 if no varbits cover the bits changed

jolly hearth
#

I see... and that checks out because the varbitId is POH_MENAGERIE_REXPET

#

I'll use getVarpValue if varbitId is -1 then, ty

rugged pivot
#

beaten by a few hours

rancid marten
#

to what extent should we be concerned 19792 is adding different potions to 19789

reef badger
#

are you sure they are not just, not alphabetical

reef badger
#

oh i guess haemostatic is here

rancid marten
#

one is adding an extra potion compared to the other

rugged pivot
#

dressings arent exactly potions but they basically are

reef badger
#
Old School RuneScape Wiki

Haemostatic dressings are a potion-type item that cures bleed when applied, healing 5 Hitpoints if bleeding was stopped via its use. It is made by using cotton yarn on haemostatic poultice, requiring 56 Herblore and granting 100 Herblore experience; though not a true "potion", the amulet of chemistry acts as normal when making haemostatic dressi...

#

"potion-type"

rugged pivot
#

you can decant them at the ge. potion enough for me

reef badger
#

i would agree with that thought process

#

if mr the decant guy recognizes it as a potion, it's a potion

neon haven
#

Looked while I was at work, didn't check again after 🦥

rugged pivot
#

apparently the wiki does not know he decants them, but I do

neon haven
#

First time I've built since the gradle switch and no messing around though so that was nice

ember flareBOT
glass sandal
#

The amulet of chemistry procs when making them and they use potion delay when consuming them so they felt enough like potions to include them in my mind

ember flareBOT
ember flareBOT
#
[runelite/static.runelite.net] branch deleted: 1.12.4-19371482354
#
[runelite/static.runelite.net] branch deleted: 1.12.4-19396591623
#
[runelite/static.runelite.net] branch deleted: 1.12.5-19493146954
#
[runelite/static.runelite.net] branch deleted: 1.12.5.1-19498995076
#
[runelite/static.runelite.net] branch deleted: 1.12.5.2-19505412833
#
[runelite/static.runelite.net] branch deleted: cache-code-2025-11-20-rev235
#
[runelite/static.runelite.net] branch deleted: wiki-data-2025-11-21
#
[runelite/static.runelite.net] branch deleted: 1.12.6-19585974426
#
[runelite/static.runelite.net] branch deleted: cache-code-2025-11-26-rev235
#
[runelite/static.runelite.net] branch deleted: wiki-data-2025-11-28
#
[runelite/static.runelite.net] branch deleted: cache-code-2025-12-03-rev235
#
[runelite/static.runelite.net] branch deleted: 1.12.7-19898884479
#
[runelite/static.runelite.net] branch deleted: wiki-data-2025-12-05
#
[runelite/static.runelite.net] branch deleted: 1.12.8-20096547646
#
[runelite/static.runelite.net] branch deleted: cache-code-2025-12-10-rev235
#
[runelite/static.runelite.net] branch deleted: wiki-data-2025-12-12
#
[runelite/static.runelite.net] branch deleted: cache-code-2025-12-17-rev235
#
[runelite/static.runelite.net] branch deleted: wiki-data-2025-12-19
#
[runelite/static.runelite.net] branch deleted: 1.12.9-20376515721
#
[runelite/static.runelite.net] branch deleted: 1.12.10-20418220719
#
[runelite/static.runelite.net] branch deleted: wiki-data-2025-12-26
#
[runelite/static.runelite.net] branch deleted: wiki-data-2026-01-02
#
[runelite/static.runelite.net] branch deleted: 1.12.11-20765869388
#
[runelite/static.runelite.net] branch deleted: cache-code-2026-01-07-rev235
quick path
#

so many old branches

ember flareBOT
#

Same here. Using new GPU plugin. It is fairly rare. I don't remember it happening before sailing.

Windows 11 event viewer logs:
Faulting application name: RuneLite.exe, version: 0.0.0.0, time stamp: 0xa599537e
Faulting module name: d3d9.dll, version: 10.0.22621.5415, time stamp: 0x63764763
Exception code: 0xc0000005
Fault offset: 0x00000000000cda5a
Faulting process id: 0x0xA1C
Faulting application start time: 0x0x1DC84735F00CED5
Faulting application path: C:\Users<REDACTED>\AppData\Local...

glad ermine
#

@rotund pier hi, I found your bronzeman plugin on the plugin hub repo and am very interested to do early testing (before it goes live on the hub because the review might still take a while). I sent you a discord invite to talk more. Hope you're open to this :)

trim pumice
#

how do you guys deal with secrets that you dont want in the runelite/plugin repository but the plugin needs to have?

thorn grotto
#

user needs to input those manually and not show them to anyone else

trim pumice
#

ah okay, i was thinking for things like external services like databases and things

thorn grotto
#

you cant have secrets in open source software nor java really

#

you'd need to put it behind a web service or have user input it

trim pumice
#

yeah i thought as much. thanks for the responses

stuck shale
#

would it be a "bug" to say that a bank tag layout's export sometimes uses the palceholderId? (if that is what was used to create the bank tag) I noticed when exporting my bank tag for potions:

banktags,1,potions,249,layout,0,15196,1,249

15196 is the grimy guam leaf's placeholder. It doesn't impact runelite but it is odd

ember flareBOT
#

Type

Incorrect behavior

Operating System

Windows

OS Version

Windows 10

Bug description

Since I've turned on entity hider I've not been able to "finish" my frog events, due to the entity hider hiding the princess/prince.
It only shows the one that stands next to you.

Screenshots or videos

No response

RuneLite version

RuneLite version: 1.12.11
Launcher version: 2.6.4

Logs

I scrolled through the logs, but I see no specific logging regarding the entity ...

trail marten
#

For Guam leaf it certainly won't make a difference.

ember flareBOT
ember flareBOT
glad onyx
#

Did you ever happen to look into it? I've just been busy haven't made time for it yet

#

Haven't noticed that either hunter rumours or shortest path addressed the misbehavior after the fairy ring change, so not yet a common solution I'm aware of

ember flareBOT
ember flareBOT
topaz pierBOT
strange kettle
#

@upper valve thanks for taking the time to review!

#

i'll make sure to keep the scope of all future changes small 😂

upper valve
#

we actually got blert before gta6

hollow lintel
#

This excites me more than gta6 im ngl

deft hatch
#

impressive

#

new record?

stuck shale
#

average for the rik

deft hatch
#

My 29 files and 5005 additions one was nothing compared to that
Oh, but mine was 48 files and 11215 additions initially, not bad ...

neon haven
#

at work I'd be tempted to reject anything over ~500 lines 😅 I suppose the way the plugin system works does kinda encourage big PRs here though

trim pumice
#

you think 500 lines is big?

#

or do you mean in a single file

neon haven
#

in total, lots of small PRs > less big PRs

#

but that wouldn't really be feasible for plugins

upper valve
#

this does not mean we're also getting bronzeman unleashed and modern chat tomorrow btw

trim pumice
#

its easier to PR yes, but easier to develop?

quick path
#

for hub plugins, that is not one of the criteria

neon haven
#

ah fair yeah, that makes it more reasonable haha

quick path
#

hence the hub quality™ meme

neon haven
trim pumice
#

it depends really i guess, green field this is easy, but a large complex system, unless its a minor feature, good luck 😄

neon haven
#

where is the line for large complex system? 😄

trim pumice
#

501 lines?

odd oasis
#

At work I just type LGTM and hit the 👍

trim pumice
#

if i were to reject all code over 500 lines, Devin would never get any work done in my job, and as they keep telling us "Devin is a 90%/10% tool, it does 90% you finish the last 10%, oh and your performance is based on how much you use Devin, whilst keeping your ACU usage per session below 20, have fun"

neon haven
#

limiting the scope of PRs to small incremental changes probably helps Devin with context too 😉

trim pumice
#

again depends on the system

narrow sentinel
#

I didn't know line count was such a factor. In my PR I fixed the unusual indenting that previously existed so it's marked every line in the file as being replaced. It's a small update, but I'm suspecting that's why it hasn't been PR'd yet.

trim pumice
#

im all for uncle bob and clean code, but i find there is such a thing as over refining the code which adds complexity

rugged pivot
upper valve
upper valve
quick path
#

that gets the hub quality™ stamp of approval!

upper valve
#

@narrow sentinel your pr hasn't been approved yet because the volunteers that review PRs have not gotten to it yet

#

also every time you comment on a pr you update it which pushes it to the end of the queue

rugged pivot
#

I can't wait to PR a single regex change for NER because jagex hates me personally

muted bone
#

7\43

#

35

#

26.32

upper valve
#

what

trim pumice
#

must be a cat

rugged pivot
#

i know some of these numbers

narrow sentinel
upper valve
#

your diff is 300 lines it's not a problem to review at all

#

anything under 1k i will pretty much look at without raising an eyebrow, 1-2k is okay, 2-3k is iffy and beyond 3k you should probably stop

hidden echo
trim pumice
#

go to "files" on the pr

upper valve
trim pumice
#

no?

upper valve
#

that would be the diff for the marker file

#

they need to click the diff linked by the bot

trim pumice
#

sorry yeah

hidden echo
#

Ah, ty sir

upper valve
#

also the "queue" is not an exact science and i'll jump up and down it to skip bigger prs or grab smaller ones, just depends on how much time i have

ember flareBOT
upper valve
ember flareBOT
rancid marten
#

Oh that is annoying

quick path
#

Yeah there's not a good fix for that afaik

heavy bobcat
#

Would at least be nice if it didn't hide the prince/princess frogs for everyone, like how the strange plant isn't hidden for other players

narrow sentinel
#

Could it just unhide all prince/princess frogs for a min or so when a Frog Herald for the player appears?

rancid marten
#

yeah that could work

ember flareBOT
upper valve
#

idk why i even ask if people want to use another bingo plugin

#

(they won't)

rugged pivot
#

my clan did a bingo last week and all we needed was Dink pretty much

worthy sparrow
#

combine all of the bingos into 1 plugin

#

if you install one, you get all of them

shy pine
#

Make them all core

quick path
#

Absolutely not

worthy sparrow
#

booo

ember flareBOT
ember flareBOT
novel stirrup
#

Are WebSocket clients allowed in plugins?

amber rampart
#

there is one in okhttp that you can use

ember flareBOT
#
[runelite/static.runelite.net] New branch created: cache-code-2026-01-14-rev235
glad onyx
#

Would you mind explaining which scripts you're referring to? Want to take another look at this

worthy sparrow
#

idk, use script inspector by black listing everything that runs every tick and watch the console as you open it

#

then search the cs2 lib for them to see if that's right

wheat thunder
random kraken
#

How do you interpret the "value frequency" charts on Chisel varbit viewer? Trying to figure out where (around 450) is the varbit for ToG being ready for the week

#

These charts in particular

#

Or do we have a better way now to find not yet named varbits?

sinful lava
sinful lava
random kraken
#

Ahhhh okay that makes sense

#

Thank ya kindly :)

ember flareBOT
ember flareBOT
ember flareBOT
ember flareBOT
ember flareBOT
ember flareBOT
ember flareBOT
ember flareBOT
rapid granite
#

Is there an API to tell if the client is minimized, not just when its not focused?

rancid marten
#

you can use the swing api

#

I think you need to client.getParent() a few times to get the JFrame and then check that

rapid granite
#

Thanks, got it working

ember flareBOT
#

Type

GPU

Operating System

Windows

OS Version

11

Bug description

Since October/November of 2025 I'm getting this weird graphical glitch with the regular GPU plugin.

On the Legacy GPU plugin this does not occur.

It seems to specifically affect the farming guild herb patch.

I am using streched mode

Screenshots or videos

https://youtu.be/1D4AQ-xUeF0

RuneLite version

1.12.11
Rev 235
Launcher 2.7.5

Logs

2026-01-15 09:12:20 CET [RuneLite] INFO net....

ember flareBOT
ember flareBOT
ember flareBOT
ember flareBOT
#
[runelite/runelite] New tag created: runelite-parent-1.12.12
#
[runelite/static.runelite.net] New branch created: 1.12.12-21037526920
ember flareBOT
sinful lava
#

quest-helper failed to build, have notified @copper pewter

rancid marten
#

oh

#

ive merge privs on it

sinful lava
#

yeah it's just some gameval object IDs that were updated, if zoink hasn't fixed it in a bit i also have push perms

#

zoink is on it

rancid marten
#

sailing is broken, too

#

@tulip wagon

worthy sparrow
#

and port tasks

rancid marten
#

that might be a problem

#

I could revert back to 1.12.11 for a bit

ember flareBOT
rancid marten
#

I dont think llemon is around

#

also cc @glass sandal

glass sandal
#

Updating now

rancid marten
#

curious why the plugin has been working since the update yesterday considering these are gameval changes?

ember flareBOT
glass sandal
#

octoburn no wonder I was having issues

rancid marten
lapis finch
#

Can I use Java 16 features in a Plugin Hub plugin?

oak rock
#

no

lapis finch
#

Okay, just 11 then

ember flareBOT
narrow sentinel
# ember flare

Thanks for volunteering your time to do this. We appreciate it!

upper valve
oak rock
#

im amazed you guys even try to talk to them

reef badger
#

only he does that

#

i know better

upper valve
#

i mean my response to that would've been to close it lol, felan just got to the button first

odd oasis
#

lol i didnt even notice the diff was unchanged

upper valve
#

yeah he literally just made a PR that deleted the EOL newline lol

grizzled aspen
#

the vague comments and flame seem unnecessary just say its invalid, close it, and move on

upper valve
#

i was mostly trying to figure out if they were actually trolling or if they were trying to do something ill-guided, it was the latter

rancid marten
#

they probably just dont know what they are doing

upper valve
#

yes that was the point of my questions to them

#

to figure that out

grizzled aspen
#

you didn't really ask a question that makes sense if they don't know what they are doing

upper valve
#

ok

rancid marten
#

something like "this is not updating the plugin because there are no code changes here" would be ok

upper valve
#

my final comment did say that

rancid marten
#

yeah, I mean instead of just replying "what are you doing"

#

does anyone other than llemon have write privs to sailing?

upper valve
#

i thought abex did

rancid marten
#

.. hes probably asleep

reef badger
#

i would think abex if anyone

#

idk just transfer it to your repo i doubt she's gonna care

oak rock
#

is she gone for multiple days?

rancid marten
#

not that i know of

#

idm moving the repo if someone has a fix for it

ember flareBOT
lapis finch
#

On Windows, is RuneLite's bundled java.exe accessible and if so where? Mac user here

thorn grotto
#

%localappdata%/runelite i think

ember flareBOT
leaden patio
#

i tried to fix the sailing plugin

reef badger
leaden patio
#

i opened a PR to fix it but it seems like the creator is MIA

reef badger
#

its only been a few hours lol

#

she's definitely not missing

leaden patio
reef badger
#

but Adam reverted the client update so if you restart the client it will be back

leaden patio
#

oh nice

tulip wagon
#

what broke

glass sandal
#

Cargo hold gamevals

tulip wagon
#

i'm still working but can someone test and review this and i'll merge+release

rancid marten
#

the release got reverted for unrelated reasons so its fine atm

tulip wagon
#

oh ok

rancid marten
#

that said i have a gradle problem where it doesnt pick up runelite.version changes

tulip wagon
#

saw that too yeah i'll look at it later

glad ermine
#

Can a config have another config's value as default?

rancid marten
#

i think no but im not sure

#

you can make a constant that is the default of two different configs

rancid marten
dense owl
#

But one currently on hub also worked so not sure why.

reef badger
#

cuz adam reverted the release

#

so the missing gamevals came back

dense owl
#

I built from master though and sailing plugin didn't have any incompatibility issue.

#

Also that PR llemon linked only seemed to be adding more gamevals not changing any so not sure what was missing or incompatible at first glance.

reef badger
#

all the _OPEN's are removed in that PR

dense owl
#

Right sorry I tried building with latest.intergration and saw that now.

#

I think I see why it still worked. The gameval didn't actually change for the one being used in game. I guess the _OPEN form was not actually in use?

#

When I open my cargo hold or put items it in the ID never changes nor does it change visually.

late hare
#

They made them multilocs is what I saw, so the one they spawn should still be the same

ember flareBOT
ember flareBOT
#
[runelite/static.runelite.net] New branch created: wiki-data-2026-01-16
ember flareBOT
tulip wagon
#

does sailing plugin need a hold-for-release or can i merge now

amber rampart
#

you can merge now

ember flareBOT
bitter chasm
amber rampart
#

you are looking at the pr build, not the merged commit

#

but since we reverted the release that your plugin was built on, it won't be live on the current client

#

we will build another release some time tomorrow, which will have it

bitter chasm
#

Ah, I see. Alright, thanks! 🙌

glad ermine
#

Okay so there's a big PR for Bronzeman Unleashed on the hub rn and understandably, there has not been much movement to get it reviewed because it's a pretty big plugin. I am very interested in getting this plugin through the process as I'd love to play the mode myself, without having to hack it in with a custom client or starting in dev mode all the time. Can I somehow contribute to the reviewing process? I've done some plugin contribution myself, and am open to learning/studying the reqs for a plugin to be allowed on the hub, or learning from other reviewers to gain some experience. Basically, how can I become a reviewer, and would I be allowed to focus only on specific plugin projects?

tulip wagon
#

for such a big review it basically just falls to whenever I get the chance

glad ermine
#

Does your response also imply I cannot become a reviewer at all currently?

Another option about which I spoke to elertan: would it help if the plugin got re-PRed with a smaller initial footprint? We'd basically nuke most of the features and keep a (hopefully) much lower LOC count base plugin. We could put other features on a separate branch and PR them in more incrementally.

#

Alot of the code has to do with game events of group members getting broadcast to the others, and syncing rules and unlocks, but the first version could exclude the group play part entirely, for example, to make it more easily reviewable

glass sandal
#

No, reviewers are invite only

grizzled aspen
#

Yes, a smaller version would likely be reviewed quicker

#

Depending on how it was written you could just point to an earlier commit than your latest one

glad ermine
#

Unlikely to work, it was under pretty heavy development with bugfixes and stuff. It probably works better to remove stuff and cherry pick them back, or create reverts later or something. But thanks for the idea :)

ember flareBOT
ember flareBOT
frank sapphire
#

Hi, can i add another warning in my plugin? since my plugin shares screenshots to a discord server unless disabled in settings
for example:

warning=This plugin submits your IP address and comprehensive records of your account activity and progress to a 3rd-party server not controlled or verified by the Runelite developers. This plugin will share screenshots to a discord server unless disabled in configs.
ember flareBOT
amber rampart
#

it would just be in the first line along side ip, etc

ember flareBOT
frank sapphire
#

that would be fine, unless i could change it to a newline with \n i guess

amber rampart
#

it is html

narrow sentinel
#

How long after a merge to master does it take for plugin hub to update?

amber rampart
#

normally a couple of minutes, but because we reverted the release it won't be until we build another release, probably later today

narrow sentinel
#

Appreciate the quick response!

upper valve
trim pumice
#

i made a mistake of refactoring my PR at the same time as adding new features - lesson learned 🙈 - separate PRs next time

glad ermine
glad ermine
#

I'm looking for a way so get the item id of a clog unlock when it happens. Is there a way I can pull it from the toast notification overlay?

quaint escarp
#

Does item movement in the bank (aka bank organizers) have to be one click per item movement?

upper valve
#

[redacted my original answer because i'm not sure what your intent is]

quaint escarp
#

Okay, that's what I felt would be the case

sinful lava
oak rock
#

I dont think we would want a plugin moving an item at all regardless if you're doing it one at a time

worthy sparrow
#

If you are talking about making a plugin that moves items in the real bank, no we wouldn't want that.

#

you are free to use the layout feature of tagtabs

upper valve
#

@quaint escarp my original answer was a bit misleading. a single click that automatically moves an item in your bank somewhere wouldn't be allowed even if it was one item at a time

#

(players often cite the 1:1 rule but that was NEVER an official jagex position. players made that up and i'm pretty sure LLMs also believe it now)

quaint escarp
#

it would use menuaction.widget_target (grab widget ids) i think

#

But what I could do is just have it recolor heatmap esq for each tab

#

So player's manually just drag colored items to the correct tab

sinful lava
#

Thanks for the clarification - this seems fine to me since you're essentially just showing where the user should drag the item

upper valve
#

isnt there a bank organizer plugin already?

quaint escarp
#

There is but it doesn't go as much in-depth as I desire
https://runelite.net/plugin-hub/show/bank-organizer
I want an endstate which is more or so organized with tagging suggestions based on bosses. So if a player wants to gear up for a boss the tags can be acquired (highlight relevent items, player tags)

#

So surface level organization, then tagging for niche activities

upper valve
#

ok

ember flareBOT
ember flareBOT
#

Type

GPU

Operating System

Linux

OS Version

Pop!_OS 24.04 LTS

Bug description

logs included, just updated the system NVIDIA driver and now it can't find a frame buffer config. every time I try to switch on GPU or 117 it just spits that error out in client.log

Screenshots or videos

No response

RuneLite version

RuneLite version: 1.12.11
Launcher version: 2.7.6

Logs

launcher.log

[client....

reef badger
#

fucking unlucky ig

oak rock
#

Why does it say uninstall complete

reef badger
#

thats a great question

ember flareBOT
ember flareBOT
#
[runelite/runelite] New branch created: 1.12.12
ember flareBOT
#
[runelite/runelite] New tag created: runelite-parent-1.12.12.1
#
[runelite/static.runelite.net] New branch created: 1.12.12.1-21078885279
ember flareBOT
lapis finch
#

Does anyone know what the varbit XPTRACKER_SLAYER_MULTIPLIER does? Also, why on a kill, XPTRACKER_SLAYER_LASTKILLXP changes to 1/2 recieved amount, then to the actual amount?

heavy bobcat
#

Maybe something to do with kill credit for the monster? Since you get half xp if someone else damages it

odd oasis
#

Are there any rules/limitations on what a plugin can include or display in their README file?

#

For context, I'm asking because I recorded a gif of the plugin in action and wondering if I need to edit it due to some vulgar language and possibly vulgar imagery

#

Can share the gif if needed

trail marten
#

I am curious what the heck could be in this gif lol

muted bone
#

lmfao

grizzled aspen
#

i'd say you shouldn't really be allowing sexual content

odd oasis
grizzled aspen
#

at least don't show it in the readme i guess

#

in general there aren't really rules rn for what can be in a readme but i'd imagine use some common judgement there

odd oasis
ember flareBOT
ember flareBOT
#

Summary

String.format internally creates new Formatter(), which in turn create a new List & various other PODs to help the formatting.

Instead, the formatting has been expanded out using a String Builder to remove all allocations other than the built string, removing garbage generated between collections which was in the ballpark of 300 MB and sometimes more.

Testing

To confirm the formatting is the same, I added asserts comparing the previous String.format to the new

...

rapid granite
# ember flare

It messed up the profile I left running for awhile so 🤷‍♀️

quick path
#

Did you make that PR using ai? The PR body says it adds asserts to confirm identical behavior but that's not in the changes themselves

rapid granite
quick path
#

(I was going to say that asserts at runtime aren't the right way to confirm things are working)

#

You could add some tests to check that

rancid marten
#

imo the problem here is more this is doing a ton of string formatting to generate a snapshot when it never uses it

rapid granite
#

Indeed, it would also be beneficial for getStartGoalXp to exposed on XpTrackerPlugin instead. Would avoid the need to call getSkillSnapshot

rancid marten
#

the entire xp tracker plugin got sort of over engineered in like 2018 and ive been trying to unscrew it up since

rapid granite
#

Yeah, Seeing @Builder in rendering hot path made me think so too

#

Less/simpler is more, more often than not 🤷‍♀️

#

Anywho, seemed easier to fix the formatting than to touch XpTrackerServiceImpl (Which I imagine would have a large bug surface area potential)

#

Technically all of those functions could be changed to getSkillState with the appropriate getters exposed, I guess.
(Seems like the idea behind Snapshot, is as it says on the tin, but it defeats the purpose to then grab only a single property off it)

neat wyvern
ember flareBOT
ember flareBOT
glad ermine
#

Anyone know a way to distinguish the GE search box from the mermaid item puzzle search box?

sinful lava
trim pumice
#

I have a fair few updates to do to my plugin, is it preferred that i do more smaller PRs with less of these updates or all at once? Im just conscious that larger PRs are less convenient for reviewers to check, i think i already know the answer, but i didnt want to annoy people with many one after another 🙈

heavy bobcat
#

Yes they prefer multiple small ones to one large one

trim pumice
#

as i thought thanks

upper valve
#

what pr is this

trim pumice
#

not made them yet, although i do have a PR currently there its been dealt with and will be merged soon i think.. im just thinking best practice going forward

upper valve
#

i tell people that if you don't want me to skip it keep it to 1k or less. 1-2k is okay i just might not get to it immediately. much beyond that is questionable

trim pumice
#

thats my thought process haha, plus i hate it when i get a large pr at work, so i know the feeling, and you guys aint getting paid for this so wanna make it as easy as i can

upper valve
#

right

ember flareBOT
ember flareBOT
upper valve
rancid marten
#

hmm?

trim pumice
#

as in my reaction, or what they did sorry?

upper valve
#

what they did

ember flareBOT
trim pumice
#

oh did they create the file just leave it empty?

glass sandal
#

Choicer should probably make sure their readme isn't so copy-pasted

upper valve
#

i'll make an issue

ember flareBOT
#

Type

GPU

Operating System

Windows

OS Version

Windows 11

Bug description

Hey, I'm submitting this report for a friend.

For the last 2-4 days, he has been having massive issues with RuneLite. After troubleshooting for a few days, even factory resetting his computer without any luck, we found out it is a memory leak issue. EventViewer told us a few times his RuneLite application was using 19GB of memory when his computer started to act weird. RuneLite crash logs also tell...

reef badger
#

that crash log does seem to be an 11 minute oom

rancid marten
#

there is no correlation between 1.12.12 and ooms

reef badger
#

shrug

rancid marten
#

at least if there is its so small i cant notice it

ember flareBOT
rancid marten
#

i also dont have an arm machine so idk

marble pilot
# ember flare

cool - does this mean my plugins gonna be added? sorry first time making one

rancid marten
#

it has been added

marble pilot
#

great thanks for reviewing 🙂

upper valve
#

typically takes a few mins to go from merging a PR to that showing up on the hub

#

it's there

marble pilot
#

thanks!

#

for updating the plugin, am I right in thinking I just make a new branch of forked plugin-hub + update commit hash + pull request?

marble pilot
#

cool thanks

upper valve
#

the readme has a section on that w/ some commands

trim pumice
#

out of interest, since ai tools have become more prominent have you seen a massive rise in plugins appear?

upper valve
#

yes

glass sandal
#

Yes

upper valve
#

90% of submissions are ai-generated

thorn grotto
#

it sucks

marble pilot
#

mine was written with the help of claude code. i know how to program but idk java so was good for me

#

imagine theres a lot of slop shit though

upper valve
#

(my own personal opinions about AI aside) it doesn't really make a difference to me other than AI sometimes does funny things

#

we don't review plugins for being correct, just for whether they break rules or hack you, and to some extent we check whether they won't destabilize the client. AI code isn't really easier or harder to review in that sense vs. something that was written by hand

ember flareBOT
glass sandal
upper valve
#

oh

#

not the trend i would have expected

rancid marten
#

can you overlay this graph with the "number of ritkens" graph?

upper valve
#

did you just synthesize that somehow or are there metrics

trim pumice
#

yeah, my opinion on it, its a great tool, but its still a tool, you have to maintain it, check it, and understand what its doing. Not gonna lie and say i dont use claude for development.
I think my major problem with ai is, vibe coding, like its so easy to let it just do it, and not understand it/learn from it/correct it. Im not a java dev (okay c# isnt too far off) but i reviewed my own code, and did my best to actually learn the tech a bit as well

glass sandal
upper valve
trim pumice
upper valve
#

i think that actually just correlates to me

#

i got merge like a month or two ago and i reviewed a lot of new ones

ember flareBOT
#

Hey, thanks for your response!

It could be Windows-ARM related. He is using Samsung Galaxy Book 4 Edge, which uses an ARM-based CPU.

It's hard to analyze further, since the logs doesn't give us much information prior to the out of memory exceptions. In his client.log file, I found these two exceptions at similar timestamps to when he notices issues:

2026-01-17 15:46:09 GMT [Client] ERROR n.r.client.plugins.gpu.GpuPlugin - error swapping buffers
java.lang.RuntimeException: unable t...
sick vessel
worthy sparrow
#

for new submission's probably 98%

ember flareBOT
ember flareBOT
sick vessel
ember flareBOT
ember flareBOT
low hatch
#

Thanks

ember flareBOT
#

Hi, i'd like to repot the same issue. I am running Runelite on ARM64 Surface 7 Laptop. Also seen it reported here: https://www.reddit.com/r/2007scape/comments/1qaa7qs/runelite_memory_leak_arm64/

Attaching a snippet of the jvm_crash log for reference.

`#

There is insufficient memory for the Java Runtime Environment to continue.

Native memory allocation (malloc) failed to allocate 32744 bytes for ChunkPool::allocate

Possible reasons:

The system is out of physical RAM or swap space

...

odd oasis
#

Can I have a maintainer look at this PR please? Single line change hotfix for a bug that can break the chat widget if the user has split private chat enabled.
https://github.com/runelite/plugin-hub/pull/10226

Thank you so much ❤️

GitHub

Updated this PR to be a single line-change hotfix due to a really weird bug. The line that was removed was causing chat spacing to be applied multiple times while the user had split private message...

ember flareBOT
quick path
#

gotchu

odd oasis
#

Thank you so much

ember flareBOT
ember flareBOT
ember flareBOT
ember flareBOT
ember flareBOT
glad ermine
#

I'm not very familiar with gradle and maven so maybe someone can say something useful here. I can't get my plugin to build correctly with mavenLocal() in my repositories. It also causes the IDE to throw a wall of red cannot resolve errors at me. When I remove it and refresh gradle deps, my IDE stops complaining and builds work fine. Is this some kind of issue in my local maven repo?

#

Is the local repo just used to cache stuff, provided I don't do other java development and publish things to this local repo?

amber rampart
#

you can remove it from your repositories safely

#

you can publish a local rl-client build to it, then use that build in hub plugins

#

you can also just delete the artifact that is broken from .m2 and it will be fine

glad ermine
#

Does using mavenLocal automatically build the plugin with a local rl-client build, if I ever published one?

amber rampart
#

not unless you build a release tag

glad ermine
#

Does building on its own publish anything? Or do I need to run a gradle script explicitly to build a release tag and publish it locally

amber rampart
#

you would gradle publishToMavenLocal in the rl repo, then set your phub rl version to whatever you just built

glad ermine
#

I see, I've never done that, so that wouldn't be the reason my plugin is breaking on mavenlocal

amber rampart
#

yeah, your maven local is probably just in a state that gradle doesn't like

glad ermine
#

If I purged my local repo with mvn dependency:purge-local-repository, that might fix it right?

amber rampart
#

probably

#

you can just delete your ~/.m2

glad ermine
#

I opened the folder and it has loads of packages in there, but not stuff that I ever published myself iirc lol

amber rampart
#

maven uses it as a cache mostly

glad ermine
#

So it's like deleting yarn cache right? Doesn't break anything and only result is having to re-cache it

amber rampart
#

yeah

glad ermine
#

Thanks abex :)

dense owl
#

I deleted my .m2 when runelite switched from maven and never seen it show up again. So if you do not use maven for anything else I don't think it's needed.

amber rampart
#

yeah

#

gradle won't write to it unless you tell it to explicitly

glad ermine
#

Ah so it's actually unused?

#

I saw it still there in the plugin hub example plugin so I figured there was a reason to keep it

amber rampart
#

mostly

glad ermine
#

Except what you just explained about custom rl client builds

amber rampart
#

yeah

#

and even for that, there is a better way now with included builds

glad ermine
#

So maven is a build tool but also a repo standard right? Gradle can use maven repos but is a different build tool

amber rampart
#

yeah

glad ermine
#

So conclusion, delete ~/.m2 and mavenLocal() and use that included builds thing haha

amber rampart
#

yeah

dense owl
#

If you delete .m2 mavenLocal() will do nothing anyway.

amber rampart
#

you basically never need to do this unless you are modifying both core and a phub plugin at the same time

glad ermine
#

Let's say I need a client update for my plugin to be able to do some advanced stuff, that's when I'd need that. But I'm not at a point where that'd be necessary luckily haha

amber rampart
#

yeah

ember flareBOT
#

I've revisited this PR after receiving notifications, and upon review I found that since the commit was authored, changes have been announced to Blighted Overloads for the upcoming seasonal Deadman mode, which I want to bring to attention.

These were detailed under the section 'Miscellaneous Changes' of this post:
https://secure.runescape.com/m=news/deadman-annihilation-overview--rewards-blog?oldschool=1

Blighted Overloads will deal 5 damage to you (down from 25) when sipped. Your D...

topaz pierBOT
ember flareBOT
glad ermine
#

Is there a neat way to return data from a clientThread.invoke call back to the caller?

amber rampart
#

generally you use it from a thread that you aren't supposed to block, so no

#

if you are doing swing you will use SwingUtilities.invokeLater

glad ermine
#

I have a future that needs to get an item definition, I want some result of that definition to be usable in a chained stage of the same future

amber rampart
#

so java futures suck

#

and its basically always easier to just do callbacks

rugged pivot
#

Please help me I’m 16 layers of clientThread and swingUtilities invokeLaters deep and I’m scared

glad ermine
#

Just make invokeLater return a future pls so I can use my sucky Java futures lol

amber rampart
#

you can use completablefuture

glad ermine
#

Yeah that's what I'll do haha

amber rampart
#

just remember that you can't ever call get() on it

#

unless you start your own thread

glad ermine
#

Otherwise it's a deadlock right?

amber rampart
#

that or it will just block the thread

#

which you shouldn't do

ember flareBOT
trim pumice
#

down to one page 😄

ember flareBOT
quick path
#

ty mobile app for double posting

ember flareBOT
#

Besides adding the initial check for the capped lower bound for defense, I don't think we can really communicate that the repeated overload effect would lead to greater and greater defense drain over time. If you'd like to put in a PR to change the hitpoints drain (in advance of the upcoming seasonal), I'll be happy to merge it once that gets underway. Otherwise, I'm inclined to maybe just leave it be, since I don't think it's often that people will be drinking a blighted overload with their ...

ember flareBOT
ember flareBOT
edgy spade
#

Does Loot Tracker send a loot received for pet duplicates? I don't see it specifically checking funny feeling. I imagine it would if the pet got put in your inventory, but may not otherwise

lapis finch
#

Is there a good way to get NPCs killed by the player? I'm currently keeping track of who we're interacting with checking .isDead on the NPC but it gets a little weird with things like Gargoyles who can be killed without reaching 0 health

worthy sparrow
#

no

quick path
odd oasis
#

Does anyone know of a good way to determine if the user has their public chat mode set to off? Only thing I've been able to find is checking the text of the widget. Couldn't find anything with the var inspector.

rose void
#

I noticed the better npc highlight plugin ownership was moved to a repo adam owns due to issues it was facing with a runelite update and the author being unavailable to fix it

I've tried to take over that plugin in the past when the owner was being unresponsive, wondering what the long term solution for that plugin is right now

#

disclosure: I am partially asking because the original maintainer disagreed with a feature I wanted added, but there are multiple open issues asking for something like what I already coded for the plugin. I am interested in getting that feature in and also have the bandwidth to be a maintainer

rancid marten
#

I am definitely open to finding a new maintainer for it

#

send a pr and ill move it over to you

rose void
#

will do, setting it up

rose void
ember flareBOT
rancid marten
#

don't break it

rose void
#

Definitely not, too many people use it to be cavalier about significantly altering it

ember flareBOT
low hatch
#

Is there a particular reason for the different behavior when sending a ChatMessageType.GAMEMESSAGE:

  1. Client#addChatMessage - The text will not be highlighted at all
  2. QueuedMessage.builder().type(ChatMessageType.GAMEMESSAGE) - All of the text after the first ChatColorType.HIGHLIGHT will be highlighted regardless of the RL formatted string
  3. QueuedMessage.builder().type(ChatMessageType.CONSOLE) - Works as intended
#
// Formatting idea thanks to Resource Pack plugin (https://github.com/melkypie/resource-packs)
                String incorrectPuzzleMessage = new ChatMessageBuilder()
                    .append(ChatColorType.NORMAL)
                    .append("[")
                    .append(ChatColorType.HIGHLIGHT)
                    .append("Random Event Helper")
                    .append(ChatColorType.NORMAL)
                    .append("] " + "The puzzle solution was incorrect. You can type '")
                    .append(ChatColorType.HIGHLIGHT)
                    .append("::exportexampuzzle")
                    .append(ChatColorType.NORMAL)
                    .append("' to export the data to your logs and clipboard. Please share it by opening an issue on GitHub.")
                    .build();
                chatMessageManager.queue(QueuedMessage.builder().type(ChatMessageType.GAMEMESSAGE).runeLiteFormattedMessage(incorrectPuzzleMessage).build());
                this.client.addChatMessage(ChatMessageType.GAMEMESSAGE, "", "This is a test", null);
ember flareBOT
hexed flume
#

Someone asked if the data stored in raid data tracker could be shared via cloud save. I suppose the easiest format for this would be allowing for a user-input save location and letting them save to a Dropbox/OneDrive/etc folder. Is this the best option?
I think each raid completion data could feasibly be saved as a config item, but that seems like an extreme misuse of the config.

Would allowing custom save locations run into Windows permission issues if not running RuneLite as an Administrator?

quick path
#

It could, yes, though I'd expect a dropbox folder to be fairly permissive

hexed flume
#

If that was an option then I'm concerned with how applicable it would be with RuneLite's config syncing and making sure that those file locations were exactly the same across different computers and especially different operating systems. Almost feels like, at worst, I'd have to have path configs for different operating systems, and it'd probably just be up to the users to figure out a file system that works for them. Seems bleak.

hexed flume
#

Been a bit since I've done maintenance. The example plugin has Gradle 8.10 and Java 11 still. Any issues with Java 17+ or Gradle 9?

late hare
#

doesn't RL itself only target 11

#

launcher is also 11 (except for mac) afaik

stuck shale
#

you can always refer back to the build guide on the wiki for how to set up a dev instance again

topaz pierBOT
ember flareBOT
ember flareBOT
ember flareBOT
ember flareBOT
ember flareBOT
#

Type

Incorrect behavior

Operating System

Linux

OS Version

Arch Linux

Bug description

Ping grapher relies on the World Hopper plugin to measure ping. I noticed that on the salvaging worlds, there is no reported ping. All other worlds have ping.

Originally reported in https://github.com/yuh25/Ping-Grapher/issues/24

Screenshots or videos

RuneLite version

RuneLite version: 1.12.12.1
Launcher version: 2.7.5

Logs

Lo...

ember flareBOT
rugged pivot
#

that's a weird one, can recreate though

neon haven
#

I changed the icon for RuneLite, but this folder icon is in fact RuneLite.
Someone's playing at work 😂

ember flareBOT
ember flareBOT
ember flareBOT
odd oasis
#

If I move a ConfigItem from one ConfigSection to another, keeping the same keyName, will users have to re-set their preference for that ConfigItem?

sinful lava
upper valve
#

config group + key name is the discriminator

thin notch
#

Howdy, I joined to create my own plugin and im sure ill have questions about that, but a question ive had about runelite for a long time is related to the icons on the right side of the client. Is there dev work ongoing to be able to re-order those buttons?

#

or alternatively, is that something I could contribute to?

tulip wagon
#

This is one of the most asked for questions and also one of the ones that is least open to contributors unfortunately

#

It's very hard to do well, correctly, and in a way that is agreed upon as what the UX should be

neon haven
#

Most recently

thin notch
#

doesnt surprise me that it gets asked often it would be a cool feature, but also makes sense that it has complexities

tulip wagon
#

We've had multiple people submit approaches that failed to reach the bar for whatever reason and the biggest question still just remains, what should the ux be? Which really only goes down to what Adam decides it will be which needs to be decided before an approach worked toward

thin notch
#

Is Adam the lead dev

tulip wagon
#

Yes

thin notch
#

cool

#

well, i currently dont know Java so im not gonna even begin to try my hand at an implementation

#

however, if I am understanding what you're saying correctly, it seems that the first blocker would just be presenting an acceptable ux

#

if I were to do that in just like ms paint or powerpoint or whatever, would that have the potential to get somewhere?

tulip wagon
#

It has also been discussed to death, and many options presented, we have a plethora of options, please do not spend a bunch of time on this

thin notch
#

or is it really something i should just stay away from (which is a fine answer)

tulip wagon
#

I am only trying to save you your effort

thin notch
#

100%, thats the answer i wanted to hear

tulip wagon
#

It's genuinely one of the most talked about ad nauseam requests in the whole server

thin notch
#

bc yeah im not tryna come in and be some big force or anything, just wanted to learn more about it

#

if u guys are working it tho I trust itll be completed over time

#

appreciate the info

trail marten
#

if there was a way to do this as a hub plugin that ux problem no longer exists. Has anyone considered making an API for it?
Especially since hub plugin users are the ones who mostly have this problem.

#

it seems like it would be fitting XD

tulip wagon
#

We generally don't let HUB plugins do things that run a risk of breaking core or other hub plugins

#

And getting it wrong could lock people out of their plugins or worse their whole client

trail marten
#

what if it was just onsidebarbuttonadded(button b) { b.setpriority(7); } then at worst it could just screw up the ordering

tulip wagon
#

Especially considering the config panel and the info panel are side panels

snow needle
#

What is the easiest way to query this item "category" that I can see in the cache viewer? Is the meaning of the value documented somewhere?

trail marten
#

the interface to modify that from the plugin would be mega jank but at least it would be a solution for people who have this problem

#

(to the extent it is a problem, I am a side panel hater XD)

thin notch
#

well i think thats part of the solution tho, sounds like a solution that doesnt prioritize a solid ux is not on the table

#

just the implication im getting tho

trail marten
#

that's why allowing hub plugins to do it would be so great. no quality standards.

thin notch
#

very possible im not understanding what ur getting at bc im new, but I think im saying the exact opposite

#

allowing hub plugins to do it, and introducing something that lacks quality standards, would not meet the expectations of the devs