#development

1 messages · Page 10 of 1

amber rampart
#

step through it with the debugger

valid wave
#

I haven't been able to get that to work from the start. Don't know why, I can use that on all my other project, but none of the runelite ones

amber rampart
#

it should just work with phub projects

#

core is a bit fucky sometimes

valid wave
#

wait, maybe this is a different problem than I thought it was

#

probably my lack of knowledge with lombak

#

this is the null error, not the tile

late hare
#

you sure it isn't erroring on getLocalPlayer() prior to logging in?

amber rampart
#

you probably aren't @Injecting something

valid wave
late hare
#

or that, probably client if it's outside of the main plugin class

amber rampart
#

if client is null because it isn't injected the println won't fire

late hare
valid wave
#

no, client is injected

late hare
#

how are you initializing that class

#

are you just doing new SecretFeature() manually?

#

you are you @Injecting it too

#

basically SecretFeature secretFeature = new SecretFeature(); vs @Inject SecretFeature secretFeature;

valid wave
#

inject is new to me, so maybe I'm not using it right

late hare
#

because manual initialization will bypass the dependency injector

valid wave
#

Ohhh, so it's redundant

amber rampart
#

if guice doesn't construct your class, it can't fulfill it's @Inject requests

#

so you need to inject it into your plugin class like you do with Client

valid wave
#

I'm not sure I follow

#

I've removed the manual init, but isn't it already injected into client and plugin?

amber rampart
#

if you call new SecretFeature() manually nothing gets to look at @Inject so those fields will stay null

valid wave
#

yeah, already got that, but I don't know what you meant after

amber rampart
#

so you do @Inject SecretFeature secretFeature instead

valid wave
#

oh, from plugin -> inject secret

amber rampart
#

which makes guice call the constructor for you, at which point it will look for the @Injects and set those

#

yes

valid wave
#

ok, that's the part I didn't understand

#

is this more lombok stuff, or is this something different

amber rampart
#

no, this is guice

#

you can tell because the package is com.google.inject

#

and not lombok.

valid wave
#

ok, so I don't setter and getter this, I inject it instead?

amber rampart
#

yes

#

you might want to @Singleton class SecretFeature

valid wave
#

yeah, it just gave me an inject error

#

what makes it yell at me for that, but not like,, config or overlay

#

or is that because the parented has a constructor

#

(or interface)

amber rampart
#

it needs to have a no-args constructor or one annotated @Inject

valid wave
#

oh, well I'll just do that

#

that's what I had already

amber rampart
#

read your error message

valid wave
#

hmm, yeah

amber rampart
#

click the top part of the left tree

#

some genius at jetbrains decided to make it hide most of your logs by default

valid wave
#
  at com.natesky9.SecretFeature.<init>(Unknown Source)
  while locating com.natesky9.SecretFeature
    for field at com.natesky9.VitalityPlugin.secretFeature(Unknown Source)
  at net.runelite.client.plugins.PluginManager.lambda$instantiate$6(PluginManager.java:595)

1 error
    at net.runelite.client.plugins.PluginManager.instantiate(PluginManager.java:603)
    at net.runelite.client.plugins.PluginManager.loadPlugins(PluginManager.java:383)
    at net.runelite.client.externalplugins.ExternalPluginManager.loadExternalPlugins(ExternalPluginManager.java:126)
    at net.runelite.client.RuneLite.start(RuneLite.java:326)
    at net.runelite.client.RuneLite.main(RuneLite.java:274)
    at com.natesky9.vitality.main(vitality.java:11)
Caused by: com.google.inject.CreationException: Unable to create injector, see the following errors:
amber rampart
#

your constructor is throwing an exception, probably because its referencing an @Inject-ed field that hasn't been injected yet

valid wave
#

is it because I need to use instance methods?

#

hmm, injected that hasn't been injected yet...

amber rampart
#

when you put @Inject on a field guice will call your constructor then set those fields later

#

so you need to inject them into the constructor

valid wave
#

sorry, I don't mean to be dense, I'm just not understanding

#

so, I annotate @inject into the secretFeature constructor, and @inject the SecretFeature into the main class

#

what am I missing?

late hare
#
public class SomePlugin extends Plugin
{
    @Inject
    private SomeOtherClass someOtherClass;
}

@Singleton
public class SomeOtherClass
{
    private final Client client;

    @Inject
    public SomeOtherClass(Client client) 
    {
        this.client = client;
    }
}
#

something like that should work i think...

valid wave
#

Oh, so singleton is required

amber rampart
#

yeah

#

its not, but its probably what you want

valid wave
#

so what advantage does this have over just... initialization?

amber rampart
#

I think you have code in your constructor, or a field with an ititializer that is referenceing something you are field injecting

late hare
#

that just tells guice to only ever make 1 instance of the class instead of making a new instance each time it's @Injected

late hare
#

so you never really run into the issue of "oh man, i need to initialize a class but it requires an instance of another class.. so now i need to pass that around to a chain of things"

#

not to say there aren't downsides, but ye

valid wave
#

I forget what the original issue even was lol, but this was educational

valid wave
#

how can you do nested config options? like a config setting that is hidden unless another option is enabled?

glass sandal
#

You can’t

valid wave
#

Hmm, can you have them hidden and toggle config options through the event?

glass sandal
#

Yes. Or just use configManager

valid wave
#

hmm, that might be too much for what I'm trying to do

grizzled aspen
#

what are you trying to do

valid wave
#

config option b is hidden until config option a is enabled

#

and when confib option a is disabled, b is too

#

I saw the event before, but now I can't find it

amber rampart
#

you can't do that

glass sandal
#

By toggle config options I thought you meant change a setting. You can’t hide and unhide configs

valid wave
#

Hmm. what do hidden config options do anyway?

#

or "secret"

grizzled aspen
#

sometimes you want to set something but its not relevant to the user, one example is people saving the 'last updated version' of the plugin to do something when it changes

glass sandal
#

Secret just shows like a password input box so screenshots don’t leak data. I think wiseoldman uses it

valid wave
#

so say I wanted to do something fun, is there really no way I can change the config layout

grizzled aspen
#

it is hard to give an answer when your questions are quite vague

valid wave
#

this is for the april fool's update, harmless joke of spawning brassica mages when you afk too long. The setting to disable this is there, but this year I'm looking to expand on it

grizzled aspen
#

i think something like that has been denied in the past?

valid wave
#

I was hoping to have a config option a, checking that would proceed to reveal extra settings

#

ah, dang

grizzled aspen
#

or i was against it and someone else merged it i can't remember

reef badger
#

i thought that already existed but one of the hub devs got really mad about it

#

i have that vague memory of someone posting on reddit about how we should not have accepted it

valid wave
#

so even recursive settings (disable a, disable sub-menu of a) doesn't exist?

#

ok, so follow-up question, can settings be disabled via code, or no

amber rampart
#

no

valid wave
#

eh, that's fine. I can still achieve what I'm going for with some clever design, but the lack of flexibility shows

valid wave
#

what goes in a runnable if you need to use the client thread?

amber rampart
#

the code you want to run

ember flareBOT
amber rampart
valid wave
#

Hmm. I guess you're right, even if it's just for one day of the year

#

should I make it a conscious effort to trigger, or give a clear indicator as to what plugin it's from?

#

I could give them an examine text or something, but I don't know how to create the uh, runelite object menus

amber rampart
#

there is no such thing

#

they don't have click testing at all

valid wave
#

Hmm

valid wave
#

how do you get your plugin's readme to be visible on the support page?

glass sandal
#

They all are?

valid wave
#

huh, in the swing panel, if I right click, the option isn't there

glass sandal
#

It doesn’t if you’re running the plugin test

valid wave
#

there's no support option unlike the other plugins

#

Ohhhh

#

wait, so in the dev environment, the option is replaced with a wiki page, which isn't the actual show page

sinful lava
#

That's only because you're starting your plugin from intellij - once it's published to the hub & users install it from the hub they'll see a proper link like the one cooper sent

glass sandal
#

Yes, it acts like a core plugin which is why it links to the wiki

mint fable
#

how long does it tend to take for a plugin to be reviewed? submitted 11 days ago, 4 days since last commit, definitely not wanting to rush anyone just wanting to know to save myself from checking all the time lol

glass sandal
#

Whenever someone has free time. Days to weeks to months. You just have to wait

mint fable
#

ok no problem, i'll continue to run it through intellij for now

low hatch
mint fable
low hatch
#

Ye understsandable

ember flareBOT
upper valve
#

@native notch ty

hollow stratus
#

yeah. I had made a write-up about what my changes have vs his a few weeks ago, but I had deleted it at some point. Was worried about oversaturation and no one would read it. My ClientUI code does pretty much the same thing as his (borrowed his profile switching code). Mine also adds reset behavior via right click while respecting any future plugin tab right click menu entries (haven't encountered any plugins that set their tab right click menu). Mine also prevents tab switching while dragging or potentially dragging, while maintaining onPress activation (instead of onClick). Also adding the drop indicator and dragged icon

I'll pull his branch and test it locally

rancid marten
#

I made a branch off of his that I got to kind of work

hollow stratus
#

feel free to give mine a shot and see how it works vs his, if you haven't already. I really tried to make the UX as runelite native as possible but with some nice QOL stuff too. I'll check yours out

rancid marten
#

ive not really looked into ux at all, im only focusing on the ClientUI changes right now

hollow stratus
#

plus, I could nuke the DragAndDropTabbedPane to remove probably a few hundred lines if you guys don't see any potential use for the component in the future, move all the functionality into ClientUI.java

rancid marten
#

the root of the problem is all of your ClientUI code is really bad

#

after that is fixed then I'll look at the other stuff

rancid marten
hollow stratus
#

yeah, I figured it would be 😂 I'm a python dev by trade. A lot of the runelite-y things I had to kinda bash my head into a wall to get things to work, so I figured there would be plenty wrong with it

#

main things I hated were the plugin panel switching when I dragged. I also couldn't find a good way to get the right click reset menu to work everywhere and also respect the existing right click option for plugins. I'll check your branch out and see what kind of magic you're cooking up

rancid marten
#

this doesnt have a right click menu or any dragging animation yet

grizzled aspen
#

Ping me if you want anything from me I haven’t looked at it in a long time

hollow stratus
rancid marten
#

yeah he is

hollow stratus
# rancid marten this doesnt have a right click menu or any dragging animation yet

gotcha, ran into a few hiccups during setup. Seems to drag and drop nicely. I like the changes to the underlying data structures you made already. I like pine's addition to the navigation button of the id. Made much easier to access nav btn id <-> obj. I wasn't sure how much me changing other classes would be viewed for contribution, so I tried to keep the changes I made to as little blast radius as possible. I'm curious to see the Adam way for implementing the default order loading and resetting

rancid marten
#

using tooltips to uniquely identify nav buttons doesnt really work because not all butons have tooltips. also they could contain a comma which would break the serialization format

hollow stratus
#

yeah, I had initially used gson serialization of the entire nav button obj to get around that

rancid marten
#

afaik this is all you need for default ordering

hollow stratus
#

dude, that's so much better. I could not find a way to cleanly do that, so I just left the default treeset and fell back to that when resetting

#

also, your tiny reorder block is so slick compared to mine

var n = navButtons.remove(from);
if (from < to) --to;
navButtons.add(to, n);

vs

if (inDraggingMode)
{
    if (fromIndex >= 0 && fromIndex < sidebarTabOrder.size() &&
        toIndex >= 0 && toIndex <= sidebarTabOrder.size())
    {
        NavigationButton moved = sidebarTabOrder.remove(fromIndex);
        int insertIndex = (toIndex > fromIndex) ? toIndex - 1 : toIndex;
        sidebarTabOrder.add(insertIndex, moved);
        saveCustomOrder();
    }
}
#

my task at work today is to refactor an entire vibe-coded terraform backend full of custom modules to use (much more robust) public modules 🙃 my new team is working an agentic AI workflow PaaS and I'm conflicted about it with my dislike for AI shit but having a job lol. Thankfully I'm mostly working on IaC and cicd for our team and staying out of the agentic stuff

rancid marten
#

lol

hollow stratus
#

yeah.... you can see why I'm a lot more interested in working on sidebar changes 😅

#

lead architect's contributions in the past 2 months since the project started 😭

ember flareBOT
#

Type

Other

Operating System

None

OS Version

No response

Bug description

In the Elite Clue Step "Catch a mottled eel with aerial fishing in Lake Molch" The Clue Scroll plugin incorrectly labels "Fish offcuts" as "Fish chunks" in the helper dialog. This was updated with the release of sailing.

Screenshots or videos

No response

RuneLite version

RuneLite Version: 1/12/20
Launcher Version: 2.7.5

Logs

No response

rancid marten
#

wow 20000

jolly hearth
rancid marten
#

.. lol

ember flareBOT
jolly hearth
#

thank you ❤️

ember flareBOT
ember flareBOT
shadow stirrup
#

What’s the (polite) way to request a PR review? Don’t want this one going the same way as my last PR - I’d forgotten about it but it’s been open for 4 years haha, I’ll look to update it or close it later this week 🤣

quick path
#

which one?

reef badger
quick path
#

has it actually been tested at all yet? I see adam asked someone to a few days ago, but idr seeing any follow-up on that yet

reef badger
#

i would guess no testing usually always replies here when asked to do mac stuff

ember flareBOT
shadow stirrup
#

Only my testing, it worked in the panels I was targeting in core (things like the search bars for plugins, etc). Thanks for taking a look!

#

Adam mentioned he’s fine with it living here because FlatLAF was a pain to update, I’ll try find the conversation and link it to the above comment when I’m off the train

amber rampart
#

iirc its basically trivial to update, we have very few patches to it

shadow stirrup
amber rampart
#

its fine having it in runelite, it just shouldn't be in FlatTextField

shadow stirrup
#

Got you - I’ll rework it, thank you for looking at it!

random narwhal
jolly hearth
#

Yeah it worked but only in some text fields, things like string inputs in plugin settings don’t use FlatTextField

ember flareBOT
ember flareBOT
ember flareBOT
#
[runelite/runelite] New tag created: runelite-parent-1.12.21
#
[runelite/static.runelite.net] New branch created: 1.12.21-23491157981
topaz pierBOT
rancid marten
#

@late trail you around?

ember flareBOT
karmic linden
#

Why are these IDs removed from the NpcIDs file?

rancid marten
#

what?

ember flareBOT
karmic linden
#

9669-9674 are absent for some reason

rancid marten
#

youre using the wrong npcid file, use the gameval one

karmic linden
#

ah ok

rancid marten
#

@quiet kettle got about 82 crashes in the last half hr

#

sort of low volume

#

but i turned it off anyway

quiet kettle
#

Oh wow

#

Home in about 5 min

rancid marten
#

granted theres only ~12k people with this build

ember flareBOT
rancid marten
#

its ok we're going back anyway due to cg being broken

quiet kettle
#

oh getLocalPlayer() can return null now?

#

guess that makes sense

rancid marten
#

well its always been able to return null but now it does it very often

ember flareBOT
low hatch
#

Anyone got advice on what to do here? Trying to fork TicTac7x's repo so I can make a PR. However, their repo is a fork of the Plugin Hub, and I already have my own fork of the Plugin Hub - hence why I think it's saying I already have a fork.

rancid marten
#

I guess push their plugin to your pluginhub fork maybe

low hatch
#

Ohhh right I suppose I could do that and then delete the branch

#

Thanks

hollow stratus
#

is it feasible to track moving of an item in the inventory? Something like a from and to index

rancid marten
ember flareBOT
#
[runelite/runelite] New branch created: 1.12.21
#
[runelite/runelite] New tag created: runelite-parent-1.12.21.1
#
[runelite/static.runelite.net] New branch created: 1.12.21.1-23504842615
rancid marten
#

@hollow stratus did you work more on the sidebar reorder thing or are you waiting on me?

hollow stratus
#

I checked on your branch periodically throughout the day to see if you made any more commits, but I didn't see any

#

or if I should even pull your changes into my PR. Let me know your preferred approach and I'll work with that

rancid marten
#

if you think you can continue refactoring my branch that would be good

ember flareBOT
#

As per a discovery i made upon making them for the first time, you can acctually make these at 53. The wiki was incorrect so the data was likely copied from that, but it was recently corrected after my confirmation via stat draining down to 52 and checking each level.

Discussin with wiki people was here. #269673599554551808 message

https://github.com/user-attachments/assets/2a5ead55-cd87-4b72-8a49-5b7963813afa

https://o...

final crater
# ember flare

nice c: my other tiny skill calc tweak pr is also up still btw.

ember flareBOT
quick path
#

fyi I committed that from the suggestion, no need for you to change it

hollow stratus
#

Do you have any other goals for your refactoring so I can guide my refactoring work? Primarily simplification of data structures and better java code standards?

ember flareBOT
rancid marten
#

are you feeding this to an llm or something

hollow stratus
#

I'm autistic

#

I try to have clear direction on what improvements you want so I don't go off and start changing unrelated* things and you go "uhh... I said continue refactoring"

rancid marten
#

it is difficult to give directions like that

#

im not convinced it works, maybe test that

#

and then also it needs the right click context menu / alt drag stuff

hollow stratus
#

as you can tell, I'm not a java dev, so my best efforts were what I arrived at in my PR. So I can totally bring in your changes into my PR, refactor to get it to work, and then test.

#

I had tested your branch and it seemed to work at an mvp level

#

I'll test your implementation further before integrating into mine to catch any issues ( I ran into a lot when developing mine, so the common issues should be fairly obvious to me).

#

just to double check your expectations, would you expect me to bring your changes into mine, and once tested/validated, update my PR? Or collaborate on changes in your fork?

rancid marten
#

you could do that, im not sure if i want to do that or if i want to instead take your changes into mine

#

mine is still really a mess like the majority of the diff is just me commenting all of the code pine added

ember flareBOT
hollow stratus
#

gotcha, yeah, I wasn't sure which direction. Whatever the decision, I'd love to get credit for the work (as well as pine)

rancid marten
#

define credit

hollow stratus
#

I'll create a new branch to integrate our reorder-sidebar branches and I'll post that here once integrated

#

hah

#

that's a good question, tbh

#

author/co-author on the merged commit?

rancid marten
#

yeah i can add you and pine as coauthors

hollow stratus
#

bless, that would be awesome

#

does the github-contributor role automatically get granted when a commit tied to my gh username is merged upstream? I'd love to get a purple name

rancid marten
#

i dont think it uses co-author

#

its complicated I think, you also have to be in the top 500 contributors or something due to a github api limit

#

which seems to be around 8-9 commits atm

rugged pivot
#

wonder how many people have the hub role

rancid marten
hollow stratus
#

good to know! I've made PRs to plugins, but I haven't authored any myself

rugged pivot
#

huh i'd expect more than 14 of the top 500 hub devs to be unregistered

reef badger
#

well it wont kick ban your role just because u fall out of top 500

rugged pivot
#

true

#

looks like the api does go beyond 500 now but excludes a bunch of the user-data beyond 500

#

oop that has emails

#

"User" type = no email
"Anonymous" type = email
makes sense

final crater
#

i guess i should have infered it looking at its usecases (all non-members items it seems)

restive garnet
#

Honestly I expected more mainline contributors

quick path
#

The use case is that some items are inexplicably noted as non-members, even if they cannot be obtained by f2p players. (ex. uncut zenyte is p2p, but cut is f2p iirc)

#

so we needed something to override the general check for those specific cases

trail marten
#

thanks adam for updating BTL ❤️

rancid marten
#

thats why im here

ember flareBOT
reef badger
#

yeah

rancid marten
#

more evidence we should remove the menuAction thing

reef badger
#

heh

stuck shale
#

only a few real uses of menuAction on the hub (13 plugins), not sure how important it is for them to have it

amber rampart
#

I audited it the other day ~all of them are for getting clogs

stuck shale
#

yeah thats what i am seeing

reef badger
#

it's a 🤯 moment why nobody could figure out how to do the clog stuff on their own

#

and had to copy from wiki

stuck shale
#

but they could remove the automatic step with a process that the old !clog did where users had to refresh their screens that were noted with a ** so they went there to refresh it

#

and then those plugins would just stay up to date

low hatch
amber rampart
#

not for that sort of thing

rancid marten
#

also dont you literally develop bots

heady pond
#

i thought infinitay was a good bean

low hatch
#

If I did I would be maxed already 😔

hollow stratus
#

what is the class for the element when there's a value popping up in the chat window, but isn't a chat message? e.g. screenshot. Not a ChatMessageType, right?

jolly hearth
#

are you asking specifically about that dialog?

hollow stratus
jolly hearth
#

I already did it 😄

hollow stratus
#

hah

jolly hearth
#

the plugin checks which modified potions you have and hides the fulfil-order entry if you don't have any, were you making the same thing?

hollow stratus
jolly hearth
#

ah yeah, simplifying-mixology tracks inventory re-ordering too

#

automatically tracks the potion modifier when it's finished being made, but you can inspect them to manually update the modifier, tracks dragging in inventory and then untracks when the potions are removed from inv, displays the modifier in the top right of the item sprite with an overlay

ember flareBOT
hollow stratus
worthy sparrow
#

You can still break that without some kind of exposed event

jolly hearth
hollow stratus
#

you mean like

    @Subscribe
    public void onScriptPreFired(ScriptPreFired event) {
        if (event.getScriptId() != SCRIPT_INVENTORY_REORDER || !inLab) {
            return;
        }
        var scriptEvent = event.getScriptEvent();

        if (scriptEvent == null) {
            return;
        }
        var source = scriptEvent.getSource();
        var target = scriptEvent.getTarget();

        if (source != null && target != null) {
            int srcSlot = source.getIndex();
            int dstSlot = target.getIndex();

            if (srcSlot >= 0 && srcSlot < 28 && dstSlot >= 0 && dstSlot < 28 && srcSlot != dstSlot) {
                var tmpMod = slotModifiers[srcSlot];
                var tmpType = slotPotionTypes[srcSlot];
                slotModifiers[srcSlot] = slotModifiers[dstSlot];
                slotPotionTypes[srcSlot] = slotPotionTypes[dstSlot];
                slotModifiers[dstSlot] = tmpMod;
                slotPotionTypes[dstSlot] = tmpType;
                savePotionTracking();
                LOGGER.debug("Swapped potion tracking between slots {} and {}", srcSlot, dstSlot);
            }
        }
    }
jolly hearth
# hollow stratus you mean like ```java @Subscribe public void onScriptPreFired(ScriptPre...
  @Subscribe
  void onScriptPreFired(ScriptPreFired event) {
    if (!inLab) {
      return;
    }

    // inventory item re-order
    if (event.getScriptId() == 6013) {
      var slot1 = event.getScriptEvent().getSource().getIndex();
      var target = event.getScriptEvent().getTarget();
      if (target == null) {
        return;
      }

      var slot2 = target.getIndex();
      var temp = potionModifiers[slot1];
      potionModifiers[slot1] = potionModifiers[slot2];
      potionModifiers[slot2] = temp;
    }
  }
``` 😄
worthy sparrow
#

The drag tracking

hollow stratus
worthy sparrow
#

Cool I didn't read that far down

hollow stratus
late hare
#

script != varbit

#

there are a lot of things with 6013 as an id 😛

hollow stratus
#

ah, thank you

#

is there an enum or data source for eventscript ids?

#

I hate magic numbers lol

jolly hearth
#

no gameval, there is ScriptID, but it doesn't include a def for 6013

rancid marten
#

no, jagex doesnt publish their names

hollow stratus
#

ah, ScriptID is what I was looking for

quick path
#

ScriptID is manually updated by us when we reference scripts in core, so it is not exhaustive

hollow stratus
rancid marten
#

yes

reef badger
#

it wouldn't be crazy but we wouldn't accept it

hollow stratus
#

😂 awww

ember flareBOT
#

I like the result this PR achieves, but I don't much like the way the initial heal amount effectively needs to be duplicated for definitions, ie. it's possible to write something like combo(food(1), offsetFood(2, 3)), which makes no sense. I think an API where the heal amounts were both given at once (offsetFood(14, 12) for moonlight antelope, for instance) or where the method or class accepted multiple Food arguments to be "applied" in sequence would be much better.

quick path
#

we're usually in the business of removing unused code in core, not adding more of it

hollow stratus
#

makes sense. Though, it seems like any plugin devs in the future that want to get that value are gonna have to keep rediscovering it

sharp knot
#

That's fine really

reef badger
#

yes but it's more correct for them to rediscover it incase it's changed

#

instead of us giving them the wrong info without knowing

hollow stratus
#

ahh, so you're saying that sometimes jagex changes things and values like a scriptID would change, breaking things?

quick path
#

that could happen, yes

hollow stratus
#

or is that just a possibility and hasn't happened with scriptIDs?

quick path
#

I can't recall scripts having changed IDs before, but I think there have been times where we'd need to change which script we use based on their changes

amber rampart
#

they only change id if their name changes

rancid marten
#

@hollow stratus or @grizzled aspen do you know what this isSelectedItemMoveable is for?

ember flareBOT
hollow stratus
#

this looks like it was pulled from somewhere, did you have this stored in notes somewhere? I couldn't grep [clientscript,inventory_reorder] or // 6013 anywhere in the code base or the documentation

rancid marten
#

its in the cs2-scripts repo

low jacinth
ember flareBOT
hollow stratus
#

Pine's looks like it's just a validity check for indicies. My equivalent checks the same but also if the hotkey is held

rancid marten
#

it doesnt really look like its just that

hollow stratus
#

ahhh, his leaves the config plugin tab at index 0 always, iirc

grizzled aspen
rancid marten
#

theres a bunch of logic here trying to determine if it should expand or contract the side panel too?

grizzled aspen
#

when the icon was dropped it would open whatever was dragged

#

which felt bad

hollow stratus
#

ran into that too, I added a hook to prevent that from happening

rancid marten
#

this is in the else {} so it doesnt run normally when things are moved

grizzled aspen
#

oh theisSelectedItemMoveable also checked for whether it was actually moved past where the icon was, or if they just clicked and moved their mouse while on the same icon

#

there was a lot of jank with this, idk how much of it is necessary

rancid marten
#

it definitely still opens when it is dragged atm

#

maybe i broke it

#

but

#

i dont see why this code would prevent that, it looks like it does nothing

grizzled aspen
#

i cant remember atm, i'll set up later and see if i can find out if its garbage or not

hollow stratus
#

I had to override processMouseEvent() to check if dragging was allowed (aka hotkey currently pressed) and if so, set potentialDrag = true before letting the mouse event get processed. This let me get in front of the mousePressed events that would select the plugin tab immediately on press instead of release and either allow the tab to be selected immediately (no hotkey held) or prevent switching tab if hotkey held

hollow stratus
#

For anyone else curious of the behavior that Adam is talking about. mine is on the left, pine's w/ adam's tweaks is on the right.
Note the immediate change of the plugin side panel upon mouse press on the right.
I failed to include an example, but when not holding the drag hot key, the behavior on the left is to instantly change plugin panel as well.
Honestly took me forever to figure out how to avoid it. I saw this behavior in all 4(?) attempts in the discussion thread, definitely a tough nut to crack

ember flareBOT
hollow stratus
# worthy sparrow You can still break that without some kind of exposed event

would you be willing to entertain the idea of a PR to your mixology plugin? Here's the current behavior, including state storing of the potions to maintain the state between log out and log in. The overlay could be tweaked, but this is just a first pass. Motivated by doing mixology for a few hours this weekend and messing up a few potions, easy to forget what type of refinement had been done

worthy sparrow
#

Idk ask hex, I'd say no because you don't actually know if it's really that one or not

hollow stratus
#

Homogenized, crystallized, and concentrated aren't the most intuitive when the UI shows the icons, so I was thinking maybe the little icons could be overlaid instead of "con", "hom", and "cry"

hollow stratus
worthy sparrow
#

I know that you are doing

jolly hearth
#

using another client or mobile between RL sessions would cause desync

worthy sparrow
#

Right or logging out or something

hollow stratus
#

I have logging out fixed by storing it in configManager to the RSProfile to prevent collisions between accounts. If I log in via mobile and switch potions around, it checks if a potion is in a location that doesn't match the saved state and removes the label. You can inspect the label to get it to show the overlay.

I swapped two potions on mobile into the other position and it did mislabel them, as expected. Inspecting each updated their values. I don't think there's anything more that can be done to track, but it's also not a problem that runelite and official client's loot tracker's don't sync up and my kc is wrong due to actions between the two as well. Runelite still thinks my Brutus kc is like 300 but official client knows its like 1500.

In my opinion, None < Better < Perfect and rn the mixology plugin is at None. My or Thource's solutions aren't perfect, but its as perfect as it can be with the tools available

#

state of my inv before logging out to switch potions on mobile

worthy sparrow
#

That will also break if you swap two potions of the same type

rancid marten
#

so I figured out what was happening with this i think

#

Pine deleted all of the mouse click functionality from RuneLiteTabbedPaneUI which just globally breaks all jtabbedpanes basically, then readded it in his ClientUI mouse listener

hollow stratus
rancid marten
#

so I did this

#

idk if this is good

hollow stratus
#

iirc, only the plugin sidebar is a jtabbedpane in the entire codebase. Is that in ClientUI?

#

I didn't touch RuneLiteTabbedPaneUI in my impl. Maybe that would've made some annoying parts more easy

rancid marten
#

plugins etc are free to make jtabbedpanes, its just like other other swing thing

hollow stratus
#

ahhh gotcha gotcha

rugged pivot
hollow stratus
amber rampart
#

eventually I would like to get rid of our custom tabs and just use JTabbedPane everywhere

low hatch
#

@late hare Could I trouble you to ask if you can determine fairly quickly the cs2 id used for charging items, and in particular the Venator Bow? I'm charging it with 2,000 charges but not seeing anything stand out. Did a quick search within Joshua's cache dump but couldn't find anything either

hollow stratus
# amber rampart eventually I would like to get rid of our custom tabs and just use JTabbedPane e...

my sidebar reorder PR adds a new ui component with all the drag and drop functionality to mirror DragAndDropPane (poor java code included tho, whcih adam is fixing up). Not sure if that would help things, but it's how I would've done it at my job: a new component to contain all the drag and drop logic for reuse elsewhere. Otherwise, all the code for drag and drop is scattered within ClientUI.java

late hare
low hatch
#

Oh... lmfao

rancid marten
#

it might be worth it to subclass jtabbedpane, i dont know yet

#

i think that is what you did right?

grizzled aspen
#

yeah i think i assumed that was the only use for it so i moved it. and the reason i think was to handle only opening the panel when the user clicked/released on the same icon.
it would open the sidebar when they dropped the icon, or pressed one but were intending to drag it

low hatch
late hare
#

Like i said, I dont think there's going to be anything specific for charging in cs2. You'd need to probably use widget inspector to see what interface it opens and try to scrape the text from it

low hatch
#

Oh wait 108

heavy bobcat
#

Isn't just about everything in that plugin just scraped from chat messages? Aside from a couple exceptions

late hare
#

108 is for any generic "enter number" dialog

low hatch
#

Yea I'll just do that and then check the widget to confirm it's for the Venator bow

#

nvm gonna default to your suggestion 😂 passed my mind that entering != actually charging

#

Thanks again 👍

rancid marten
ember flareBOT
ember flareBOT
rancid marten
#

@upper valve can you look at this fixed mode hide chat thing? I think it just needs a .build() on this script event

ember flareBOT
#

Well I did see that the other hunter meats were added this way, which are under the line I added, this was the only hunter meat missing that I could see.

I also cannot actually recall how it is displayed on RuneLite using the
combo(food(6), food(5))
Which all of the others use as I'm not near my PC. I thought it showed it as 2 separate heals - but could be wrong.

I mainly thought it was just weird to be missing only a single hunter meat, when all the others are there (Even if it does sh...

rancid marten
#

ty

stuck hearth
#

Disabling github issues in plugin hub plugins should be illegal

glass sandal
#

It’s generally not allowed. But when making a fork issues are disabled by default and people forget to enable them

rancid marten
#

yeah

#

i pushed some stuff if you want to check it out

ember flareBOT
ember flareBOT
hollow stratus
# rancid marten i pushed some stuff if you want to check it out

so far, so good. I had used the CTRL_DOWN_MASK at some point too before I got to the hotkey. Works on mac too with Ctrl.

noted current behaviors from testing as much as I can on a mac (some to be expected in WIP state):

  • ading new plugin adds it to the top of the sidebar (index 0) (expected?)
  • no clicking issues when interacting with JTabbedPane in a plugin panel (used Slayer Helper plugin to test, ty Hannah)
  • now able to drag tab to index 0
  • (still) unable to drag tab to last index (drop index logic doesn't take mouse position into account, always inserts above dropped index)
  • jtabbedpane tabs still display cursor hover darkening while dragging icon (easily fixed with overriding setRolloverTab() in RuneLiteTabbedPaneUI.java and setting rollover tab index to -1 if dragging, see https://github.com/runelite/runelite/pull/19910/changes#diff-18bf4ed5c6e24a0c3711b02a9b3e0804f807ee5733f2b661191045c8303360f4) (expected)
  • tabs stay as-is when switching profiles (don't load other profile's plugin list) (expected)
  • tab still is tracked and dropped in proper location when releasing Ctrl during drag (expected)
  • uninstall and reinstall of plugin in same session (no tab dragging in between) successfully restores plugin tab to same location
  • uninstall and reinstall of plugin in same session (draging tabs in between) unsuccessfully restores plugin tab, reinitialized to index 0
  • uninstall and reinstall of plugin between sessions (uninstall plugin, close app, open app, install plugin; no tab dragging in between) successfully restores plugin tab to same location
  • uninstall and reinstall of plugin between sessions (uninstall plugin, close app, open app, install plugin; dragging tabs in between, both cases of reordering tabs before exit and after reopening) unsuccessfully restores plugin tab, reinitialized to index 0
midnight palm
#

Hopefully this is not a nooby question i've been working on my first plugin it's foodutils. I couldn't figure out how to use the item service intitially to get heal values so I just made a hash map manually of all the food in the game lol.
Now that I figured it out or atleast I think I did it requires me to put @PluginDependency(ItemStatPlugin.class) for it to run so that it can actually work I guess? That't part of base runelite right? Like i'm not
just adding another barrier to using my plugin by making it so they need to download another plugin ?

stuck shale
#

You can rely on core s stuff in a hub plugin. It’s not a barrier

midnight palm
#

Ok, thanks for the quick answer 😄

stuck shale
#

Clone core, you’ll see all the built in stuff it already has

hollow stratus
midnight palm
#

i didn't even know delayed heals was a thing lmao tyvm

hollow stratus
#

@jolly hearth I haven't checked your repo if you have this, but I was able to get the icons as overlays on the potions so it's more readily obvious which is which. trying to translate icon to homogenize, crystallize, or concentrate always added a hitch in my flow. It's toggleable between text and icon via plugin config too. Thoughts?

snow needle
#

My plugin has a class that implements ItemComposition which extends ParamHolder. In the impending API update there is a change to ParamHolder which breaks my build, and I assume will break the plugin for my users.
What's the best way to fix it when the API change releases?

glass sandal
#

You can PR it in advance and have someone add the hold-for-release tag

snow needle
#

I have a PR open for 5 days now. Should I close that and PR the minimal change or can I tack it on that?

reef badger
#

if you need the changes then you should submit the changes separately and just set the old PR to draft

snow needle
#

Well I think I need them? It rebuilds all the plugins with the new API and mine will fail to build, so what happens?

reef badger
#

are we talking about a recent change or an upcoming change? b/c if the plugin needs something from tomorrow's game update it should have already failed to build?

reef badger
#

cuz adam already pushed tomorrow's changes to the hub and rebuilt a ton of plugins

snow needle
#

My plugin started failing to build in the last few hours because of this change. If it's currently working on the live client will it still work tomorrow?

reef badger
#

mmm i'm not sure this is an abex question

snow needle
#

I guess it's better to PR the patch separately because either way I probably have to reset my 5d wait time.

snow needle
jolly hearth
amber rampart
ember flareBOT
#
[runelite/runelite] New tag created: runelite-parent-1.12.22
#
[runelite/static.runelite.net] New branch created: 1.12.22-23537723958
#
[runelite/static.runelite.net] branch deleted: cache-code-2026-03-18-rev236
#
[runelite/static.runelite.net] New branch created: jav-config-23538814862
#
[runelite/static.runelite.net] New branch created: cache-code-2026-03-25-rev237
swift knot
#

I'm pretty new to plugin development but I made a custom bronzeman mdoe that me and a few friends are playing, what do I need to do to make the .jar playable again after a rev update?

#

I get the error error_game_js5connect_outofdate, when launching the .jar.

heavy bobcat
#

Just pull the latest changes from git and remake the jar

swift knot
#

Ok thanks, it there any docs to show me how to do that in Intellij?

heavy bobcat
#

Actually if it's a hub plugin all you need to do is remake it

swift knot
#

Is it something to do with git pull

heavy bobcat
#

Gradle will pull the latest RL version automatically

swift knot
heavy bobcat
#

Well I mean set up like a hub plugin

#

Or did you build it inside the RuneLite repo

swift knot
#

I cloned a plugin and modifyed it, so we could play as a group

heavy bobcat
#

Gotcha, then yeah should just be able to rebuild the jar and it work

swift knot
#

I'll try rebuilding the JAR first and see if it works

heavy bobcat
#

Gradle may cache the version tho, you can maybe run build --refresh-dependencies if it doesn't work and then rebuild the jar again

swift knot
#

Ok thanks

ember flareBOT
ember flareBOT
#

Type

Other

Operating System

Windows

OS Version

Edition Windows 10 Home Version 22H2 Installed on ‎9/‎30/‎2023 OS Build 19045.6466

Bug description

was having connection loss issues so i deleted cache files from runlite client using instructions from google search now runlite runs with old original client hud style, ive tried uninstalling both the jagex launcher and runelite including using revo unistaller to make sure fully removed but it is the same after fresh install ...

hollow stratus
ember flareBOT
snow needle
ember flareBOT
tight quarry
#

As my client froze a few times since completing the easter event, I started checking my logs and it looks like there might be some issues after the update.. Not sure which are osrs client issues and which are runelite. But at least I'm getting a whole bunch of NullPointer exceptions:

2026-03-25 16:35:58 CET [Client] WARN  n.runelite.client.eventbus.EventBus - Uncaught exception in event subscriber
java.lang.NullPointerException: null
    at net.runelite.client.plugins.npcunaggroarea.NpcAggroAreaPlugin.onLogin(NpcAggroAreaPlugin.java:467)
2026-03-25 16:35:59 CET [Client] WARN  n.runelite.client.eventbus.EventBus - Uncaught exception in event subscriber
java.lang.NullPointerException: null
    at net.runelite.client.plugins.loottracker.LootTrackerPlugin.onChatMessage(LootTrackerPlugin.java:1049)
    at net.runelite.client.eventbus.EventBus$Subscriber.invoke(EventBus.java:70)
    at net.runelite.client.eventbus.EventBus.post(EventBus.java:223)
    at net.runelite.client.callback.Hooks.post(Hooks.java:217)
#
026-03-25 16:35:57 CET [Client] WARN  n.runelite.client.eventbus.EventBus - following log message logged 1000 times!
2026-03-25 16:35:57 CET [Client] WARN  n.runelite.client.eventbus.EventBus - Uncaught exception in event subscriber
java.lang.NullPointerException: null
    at com.adamk33n3r.runelite.watchdog.EventHandler.onSpawned(EventHandler.java:411)
    at com.adamk33n3r.runelite.watchdog.EventHandler.onSpawned(EventHandler.java:403)
    at com.adamk33n3r.runelite.watchdog.EventHandler.onTileObjectSpawned(EventHandler.java:399)
    at com.adamk33n3r.runelite.watchdog.EventHandler.onWallObjectSpawned(EventHandler.java:381)
    at net.runelite.client.eventbus.EventBus$Subscriber.invoke(EventBus.java:70)
    at net.runelite.client.eventbus.EventBus.post(EventBus.java:223)
    at net.runelite.client.callback.Hooks.post(Hooks.java:217)

All of which point towards the same issue where a client.getLocalPlayer() call is done, followed by a .getWorldLocation(), which makes me believe it's about the client.getLocalPlayer() unexpectedly returning null..?

quick path
#

yes, that's something that happens now

#

but those wouldn't cause the client to freeze

tight quarry
#
2026-03-25 16:35:59 CET [Client] WARN  injected-client - Mismatch in overlaid cache archive hash for 12/1049: EE83501CDE10EEF0EF0CC75B7F41E075215C41B7C2D073449C9810A6FE85CC4B != 1042516058505EB29AAEBC8D6A198DEA3E98F600F09261A5DB4752E67AEE5F34
2026-03-25 16:35:59 CET [Client] WARN  injected-client - Mismatch in overlaid cache archive hash for 12/920: 9808BCC0788983C233CDDFECA2BC0552C1515CC84A390F88E2F8DADD1E115E0C != AF458B2981C10F8DB711C11ACE8DBBA929671081AD3E9DCDF02E81B58036C351
2026-03-25 16:35:59 CET [Client] WARN  injected-client - Mismatch in overlaid cache archive hash for 12/7109: 4E13B92470B9AF3737033002AB503969E9FC5494E418F020BD099956248EB39C != 858C02A417330538D31EF500BAC90C250115709F2913D677B57B9DC8E57F9F7F
2026-03-25 16:35:59 CET [Client] WARN  injected-client - Mismatch in overlaid cache archive hash for 12/2475: B14B3F0F7B91634F66F40BCD513C5850FBA440AB06F8174496C31B1F33AFC4FA != 597847FE3AAA11385E3AD2A4AD91EB620D3F35DF604924AE79B7FA86C873B51D
2026-03-25 16:35:59 CET [Client] WARN  injected-client - Mismatch in overlaid cache archive hash for 12/3643: 5370BB012B032E96E598341A2187242EFB248D991EC87E53969373511635763F != 75E402D30EA556125419DA68F0C3EC6B0E9CC9A55E5815ECFF3D83E7432BB05C
2026-03-25 16:36:00 CET [Client] WARN  injected-client - Mismatch in overlaid cache archive hash for 12/3644: A96A7A991F6D9D77FC04741899CD28359C00CDFD4E4EF8DEBD21D84A6FFAED0E != 54CB72D945F3EA9C2EFCFA24FF13F1C9B60C4189BBF58A80AEDB7DEAE7B0D03F
2026-03-25 16:36:00 CET [Client] WARN  injected-client - Mismatch in overlaid cache archive hash for 12/223: 3755C09903AD6E8EDD75FA536E822760ACB3A8E972A42BC2549D76CA652A76E5 != 731D34761408EE074A436E08A1BCA605B7302243A844B2B6F3471C646C233AF1
2026-03-25 16:36:00 CET [Client] WARN  injected-client - Mismatch in overlaid cache archive hash for 12/84: 7A12A20A6495A68B35F8A1BAF7CF5C6C9ED1B9C23E261C61F8A3660CDAB1A591 != D1173E761A81C65F358FC67899ACE5720266BD90A09F8609D96256E948D696BD

These are the other logs I see

quick path
#

Are you running an up-to-date client?

tight quarry
#

In combination with my current equipment screen being "empty". Someone else earlier also reported his equipment screen being empty. (not sure if they were using runelite though)
This only happened to me after wearing the new egg, and the client freezing, then restarting

tight quarry
# quick path Are you running an up-to-date client?

Not 100% sure. These logs are from a plugin branch, where I did use the sync all gradle projects and download sources, before re-running. (Not sure what i'm doing yet in that regard but thought it wouldn't hurt)

quick path
#

What is the client version in info_icon ?

ember flareBOT
#

Type

Incorrect behavior

Operating System

None

OS Version

No response

Bug description

As of a recent client update, client.getLocalPlayer() is now much more likely to be null, particularly close to logging in, so we should update the client code (plugins, etc.) to ensure we're properly null-checking it where needed. A couple examples of errors are listed in the logs section below.

Screenshots or videos

No response

RuneLite version

.

Logs

2026-...
tight quarry
#

The client freeze and equipment bug by the way also happened using the official runelite client

quick path
#

hmm

tight quarry
#

This is from the non-plugin one/official runelite client

low hatch
low hatch
tight quarry
#

Full example of the equipment issue.

I don't have the jagex client so I can't verify if that issue exists there as well.. (and so if it's runelite related or not)

low hatch
tight quarry
quick path
#

does this happen in safe mode?

tight quarry
#

Hmm.. Looks like it doesn't!

#

I'll try and restart with most of the external plugins disabled and see from there

jolly hearth
tight quarry
# quick path does this happen in safe mode?

I uhm.. Don't know why.. But so far with my findings.... It seems like the "Default world" plugin might be causing the issue..? It would be the past plugin I'd think would cause such an issue.. But I tried it quite a few times now. Even with all my external plugins enabled.
When I enable it, I get the equipment issue, when i disable it, every time my equipment shows as expected.

#

The default world plugin is disabled by default in safe mode it looks like

ember flareBOT
tight quarry
trail veldt
#

Anyone aware of what varbits/varps track the status of the barbarian training minigame? I'm trying to figure out a way to determine whether a player has completed the first part of the barbarian firemaking section (and therefore has access to the ancient cavern)

#

searched around the VarPlayerID/VarbitID classes, the wiki, and chisel to no avail

tribal haven
#

I don't believe there is one.

tight quarry
#

Not sure if it helps, and if it's available. But it's a miniquest, so maybe you can obtain quest status information somehow..? And determine it from that?

misty hornet
#

You can only detect if it's not started, in progress, or completed

#

(Unless they open the quest guide)

tight quarry
# misty hornet (Unless they open the quest guide)

In that case an option @trail veldt could be to prompt them to open the quest guide, depending on your plugin use-case of course. And then watch for specific prompts like the quest helper plugin does, and then store a config variable when it has been completed. Just throwing suggestions out there 😄 Too bad it's not as easy as checking a varbit..!

misty hornet
#

Yeah, that's most likely the simplest answer

  1. check if completed
    if not, prompt to open + check
rugged pivot
#

just relogging fixed it though

rugged pivot
#

poggers

odd oasis
#

Incredible

valid wave
#

There was a new update today, right?

#

I updated my plugin because something was getting deprecated

pastel tree
#

yep, rev237 update.

pastel tree
#

My mind is being boggled by these roof objects. Was there recently an update that allowed gameObjects to swap models via a different system to imposters?
These roof object definitions contain nothing but simple models made of two triangles. However, somehow the client is rendering totally different models to what is in the object definition - its rendering proper roof models with many triangles, not just two.

ember flareBOT
amber rampart
snow needle
#

Brilliant, thanks!

amber rampart
#

so if it decides your plugin needs to be rebuilt it will fail then

snow needle
#

Got it I will have to update my current PR then

rancid marten
#

why are you implementing api classes?

forest forge
#

Are seed vault and looting bag not triggering ItemContainerChanged events for anyone else? Checking your looting bag and opening your seed vault used to trigger it

snow needle
#

I made an implementation of ItemComposition that wrapped all visually identical items so I could run the same logic on a single item composition and all visually identical item compositions.

#

it was a bit of a hack

forest forge
#

Removing/adding an item still triggers for seed vault (626) but opening the seed vault itself doesn't trigger it (even on a fresh reload of the client).

amber rampart
#

something has changed with it that broke clue scroll loot tracking, not sure what

rose void
rancid marten
#

I saw someone report the clue scroll tracking wasnt working earlier too

#

interesting

amber rampart
#

its definitely broken

rancid marten
#

there was some engine change around the ItemContainerChanged event

amber rampart
#

my guess is that the server is sending inv events earlier than it used to

rancid marten
#

but id assume if ItemContainerChanged was broken there would be more things broken

#

mmm

late hare
#

looks like the update full packet is calling a diff method than the partial/stop packets

#

ow.aj

#

looks like a jagex bug

#

they're using the varclan transmit method lol

rancid marten
#

oh this is just a straight up client bug

#

ree

#

im surprised that this is working really at all

amber rampart
#

lol

rancid marten
#

we can maybe fire invchange for varclan change

#

i guess

#

why not

late hare
#

famous last words

rancid marten
#

ive done much stupider things

#

im surprised there is apparently NO user facing issues with this other than some plugins dont work

#

i would expect the bank and inventory to not work really

late hare
#

inv packets always come before interface opening

rancid marten
#

ahh

late hare
#

so works by accident

rancid marten
#

"worsk by accident" is how most of this works honestly

#

okay

#

did you see this hitsplat thing btw

#

not the thing you sent me but the other one

#

the 17 hitsplat moves lol

late hare
#

lol wtf

rancid marten
#

yeah

late hare
#

more than 1 problem with hitmarks 😭

rancid marten
#

theres a bunch

#

i had a long discussion today with some people about it

#

its going to get fixed

#

and! the minigame teleport thing is being fixed next week

late hare
#

is that them reusing the same component for all spellbooks

rancid marten
#

yeah

worthy sparrow
#

Does that mean they will use different sprites for each one

hollow stratus
# jolly hearth A PR would be great, are you using images? If so you could use spritemanager ins...

I am actually getting them on the fly from the UI!
Here's my latest commit to my fork of the mixology plugin: https://github.com/swirle13/mastering-mixology/commit/2376edbe3b4a61d2f5f4f66597bfafabcec96ff1
The two files you'll want to look at primarily are PotionModifier.java where I get the icons from SpriteID and associate them with the PotionModifier() and InventoryPotionOverlay.java where I draw the icon over the items.

ember flareBOT
#

Skills that are not boosted should not be considered for maxIconWidth.
Do all of the boost calculations here and save the next for each the trouble.

Quick mockup (don't know if it will compile or past formatting checks):

		HashSet<DrawableSkill> drawableSkills = new HashSet<>();

		for(Skill skill : boostedSkills)
		{
			final int boosted = client.getBoostedSkillLevel(skill);
			final int base = client.getRealSkillLevel(skill);
			final int boost = boosted - base;

			if (boost == 0)
			...
ember flareBOT
#

Adding this only to the mining plugin feels out of place. If we were to add this--and I'm not guaranteeing this is a change we want--I think this would fit better as a global option within RuneLite > Overlay settings, and would apply to all the circle/pie overlays in the client.

I'm not sure where the Overlay settings are presented on the client. Can you point me to them either on the client or the source code?

pastel tree
#

How are the loaders in the cache tools in runelite tested? Can they be wrong?

rancid marten
#

yeah definitely

pastel tree
#

ah ok thanks

rancid marten
#

any login screen background powerusers here?

#

like via resource packs or login.png or any combination

rugged pivot
#

i've been known to dabble

rancid marten
#

can you test something in a minute

rugged pivot
#

sure

rancid marten
#

i made it support arbitrary sized title screen images

rugged pivot
#

wow i can fit so many more scimitars now

#

i was confused why my 1080p login.png didnt fit on the monitor until I realised stretched mode affects it

rancid marten
#

and check the world switcher

rugged pivot
#

oh the background with Custom background Off is bigger on this

rancid marten
#

yes

rugged pivot
#

neat

rancid marten
#

its using the mobile login screen

rugged pivot
#

how many of the old login screens are there expanded versions of?

rancid marten
#

none

rugged pivot
#

unfortunate

rancid marten
#

well what do you mean by old login screens

#

like leagues etc?

rugged pivot
#

these guys

rancid marten
#

its probably possible to datadump them from old caches

amber rampart
#

the wiki might have them

#

if not I can grab them all

rugged pivot
#

second gallery

#

not all though

#

which makes sense

#

anything else need testing?

rancid marten
#

I guess resource packs if you use those

rugged pivot
#

the pack I use doesnt do a login screen but I can find one that does

#

nvm it does I just had the config disabled for years so I could use my own

#

uh many of them have flame issues

rancid marten
#

does that only happen with resource packs?

rugged pivot
#

none of the built-in ones do it but if I make one less wide it does it too

rancid marten
#

can you give me one of the images

rugged pivot
rancid marten
#

mm yeah i see

rugged pivot
#

seems like every resource pack that includes its own does this because their guide size is less than the real width of the flames

rancid marten
#

its anything that is >383 and <765 px wide

#

i think

#

anything >383px it does not mirror, and so if it isnt wide enough to draw over the flames then the flames dont get cleared

rugged pivot
#

if it is much less than 383 it still has issues on the right

rancid marten
#

thats the same thing i guess

#

mirrored image is too small

rugged pivot
#

yeah

#

these layered flames are kinda pretty to stare at

rancid marten
#

this kind of sucks to fix

rancid marten
rugged pivot
rancid marten
#

yeah i see mm

#

on the normal login screen the fires are actually 22px wider than what it displays, it cuts it off

rugged pivot
#

yes

rancid marten
#

which I think is new

rugged pivot
#

so it stops cropping the flames if width > 383px

rancid marten
#

yeah

#

making this work for really broken background sizes is maybe not worth it

#

i can fix it for 765 and 383 size backgrounds though

ember flareBOT
#

Type

Incorrect behavior

Operating System

Linux

OS Version

Nobara 43

Bug description

When trying to fullscreen the runelite window on my main 4k monitor, it matches the width of the main monitor but the height (and possibly refresh rate) is matching my second monitor, which is 1080p. Adjusting the scaling settings of the 1080p monitor will change the height or runelite when fullscreened on the 4k monitor.

Screenshots or videos

RuneLite version

Bolt Launcher
...

rancid marten
#

1min ill get another build

#

this should work ok with 383px, 765px, and then anything >765px

#

.. which is 3 different codepaths

#

lol

rugged pivot
#

383px and 765px work but you then have to go to like 815px actually nvm 815 still gets a sliver of flame stacking on the left only?

rancid marten
#

im only expanding the clip area by 22px so i would expect 815 to be ok i think

rugged pivot
#

easier to see, this is 766px

rancid marten
#

anything >= 765+22 would work i think

rugged pivot
#

seems to only clip on 765, not anything higher

#

here's 766

rancid marten
#

actually maybe it would be 765+22+22

ember flareBOT
#

Type

Incorrect behavior

Operating System

Windows

OS Version

Windows 11

Bug description

The Feb 25, 2026 update added several new POH portal teleports to the Portal Chamber. These do not show minimap icons in the POH plugin. Likely affected teleports from the update are; Trollheim, Paddewwa, Lassar, Dareeyak, Ourania
Barbarian, Khazard, Ice Plateau, Respawn, Teleport to Boat.

Screenshots or videos

RuneLite version

1.12.22
2.7.6

Logs

No response

rugged pivot
#

the left flame just seems to be wider

rancid marten
#

yeah i think the answer here is just dont make dumbly sized login screens

#

as long as 765 is ok that is good

rugged pivot
#

809 (765+44) is fine on the right but shows slightly on the left

#

but yeah you're right

#

anyone using it will be 383, 765, or an actual high res image that doesnt have an issue in this in-between space

rancid marten
#

if youre curious this is what it does if you just feed it titlewide without fixing the fire clipping

rugged pivot
#

mm I hate that

#

can you make it not cull the flames at all so I can have the trippy stacking?

rancid marten
#

no because it uses the background painting over it to cull it

rugged pivot
#

makes sense

deep adder
#

did anyone figure out which plugin was causing empty equipment?

rancid marten
#

hmm?

deep adder
#

relogging doesn't seem to fix it for me :/

rancid marten
#

this is an engine bug

#

wear something?

deep adder
#

swapping a piece of clothing seems to fix it ... restarting runelite causes it to go empty again

#

oh well, should workaround for now! ty

rancid marten
#

thats interesting since it is not that broken for me

#

either way im going to patch it

rugged pivot
#

I had the opposite happen a couple weeks ago where I could see all my equipment on the equip screen but my character model was naked, until I ran across a load line or something

#

only happened once

ember flareBOT
ember flareBOT
ember flareBOT
twin rover
#

So im attempting to hide a menu option when the config option is enabled and the regex is detected. I can make it hide the menu option when chosing the applicable config open using this, but im not sure how to also require the regex

        for (MenuEntry menuEntry : menuEntries) {
            if (mazchnaOptionPresent &&
                    (config.getUseSkipReminder() == SlayerTaskStreak.Ten  && menuEntry.getOption().equals("Mazchna")) ||
                    (config.getUseSkipReminder() == SlayerTaskStreak.Fifty && menuEntry.getOption().equals("Mazchna"))) {
                continue;
            }
            alteredMenuEntries.add(menuEntry);
        }

tried using this but it just stops hiding the menu entry completely
(matchesPattern(SLAYER_TASK_STREAK_10, client.getMessages().toString()) && config.getUseSkipReminder() == SlayerTaskStreak.Ten && menuEntry.getOption().equals("Mazchna")) ||

Anyone got any tips for me on this one?

ember flareBOT
rancid marten
#

client.getMessages().toString() isnt anything and so this just looks made up

twin rover
#

yeah i kind of tried messing around with the intellij corrections and it led me there lol, kind of assumed it wouldnt work using that

#

still pretty new to java and been looking on the hub to find any similar thing for reference, but cant seem to find anything that needs a regex to hide a menu option 🙁

ember flareBOT
ember flareBOT
tight quarry
#

Been looking at the lookup code from the hiscores plugin, but I'm overlooking which call makes the plugin panel get focus...
Anyone knows by any chance? Before I spent 15 more minutes searching 😄

tight quarry
#

My hero! Thnx! That would've taken me quite a bit more minutes to find haha 😄

knotty lintel
prisma hornet
#

(never coded Java before this, prefacing lmao)

I'm making a sound plugin a la [odablock-sounds] and am trying to implement a class that changes the sounds of getting hit, currently I'm trying to draw from net.runelite.api.Hitsplat to determine I've been hit and the hit was > 0 etc. but when I try to deploy it it throws

Caused by: com.google.inject.CreationException: Unable to create injector, see the following errors:

  1. No implementation for net.runelite.api.Hitsplat was bound.
    while locating net.runelite.api.Hitsplat

Since I'm unfamiliar with Java as a whole I don't quite understand what this error means exactly— it's an interface in the api, it definitely exists, as my IDE doesn't throw red lines everywhere as well, and it was autofilling, so I know it's actually there. There's no errors in my code about it, but when I go to deploy, it gives me this error everywhere that class is.

Am I misunderstanding something? Can I not use an interface in a class or something?
Secondly, is there possibly an easier way of implementing something like this?

Thanks in advance.

prisma hornet
#

I saw that, but I didn't see any methods for determining it's non-zero for instance

sharp knot
#

hitsplatApplied.getHitsplat().getAmount()

prisma hornet
#

see I didn't know you could method like that ;_; plus I didn't realise that getHitsplat would work like the interface

#

I'll implement that and see if it works (it should from what I see)

#

for future ref, I basically only want events? and an interface would be like, a part of an event?

prisma hornet
#

Hmm, so I got a java.lang.NullPointerException: null

#

it's pointing to the empty line under my if statement of the class

worthy sparrow
#

did you make changes and not reload

prisma hornet
#

i dont think so, ill reload just in case

sharp knot
#

Are you actually subscribing to HitsplatApplied?

prisma hornet
#

yes, onGameTick(event) in my plugin file

sharp knot
#

That's not subscribing to the HitsplatApplied event

prisma hornet
#

i think i follow, back to the lab

sharp knot
prisma hornet
#

I understand now I think, I had duplicated a similar class and was modifying it, not knowing that by changing the class im changing a lot more than i thought

hollow birch
#

I can’t login to GitHub at the moment since I’m at work, but I did tell @main flax that he can take over this plugin #github message

arctic surge
#

was there any follow up on this discussion? I see that the pull request to toggle the ping % loss was closed

#

I've had to just turn the world hopper plugin off for the past month or so because I don't want to see red text for % loss appearing and disappearing on my screen, and so now I can't easily see the world ping ms

rancid marten
#

do you normally play with loss? why is that normal?

arctic surge
#

uh yea there is always ping loss being displayed, it never affects my gameplay (and I do high level, very active gameplay)

#

I don't know why it's normal, but this seems to affect many people

rancid marten
#

that doesnt sound right

#

i dont think thats true

arctic surge
#

either way, regardless of whether it actually has any impact, if users are saying it does not affect their gameplay and they just want to not be visually spammed with this "% loss" text, why not give them an option to hide it?

rancid marten
#

because i dont believe that

#

and also because the ms value is sort of pointless to have if you have loss

arctic surge
#

It's not pointless, that value is useful to me

rancid marten
#

it is pointless because there will be a % of packets which require retransmitting, which takes several times longer than whatever the reported ping value would be

arctic surge
#

I like to know my ping at a glance, without having to go into world hopper (which you can't do in certain areas of the game), or having to open the runelite side panel (jarring/distracting):

  • Am I on a east/west/uk/aus world? Throughout the years I have preferred worlds in different regions due to game server performance characteristics changing over time. In 2019-2022 I preferred UK worlds because they had more consistent ticks. Lately I've preferred east worlds because UK worlds have felt very choppy. Maybe I'm mistakenly on an AUS world (200+ ping) before I start a raid.
  • Is my ping abnormally high vs. what I expect? This might tell me that something is wrong. For example, in the past west worlds had like +20 ms of ping for everybody, so we talked about that in the communities I'm a part of, and realized everyone was experiencing the same thing. Or let's say my ping is like +500 ms, this was indicative of someone doing an uncapped upload in my house back when we had our old modem.
  • Is my ping fluctuating rapidly/flaky? This would be indicative of accidentally playing on a wifi connection, which is has much more variance (jitter?) than the wired ethernet connection. Maybe I had to switch to the wifi connection because my internet was out, and I forgot to switch back.

Seeing the ping in the top is not pointless, I have had many uses for seeing it (listed above) in years past.

I don't like seeing the "% loss" red text in the top right, which is not indicative of any negative gameplay aspects for me. I can say this with confidence because I haven't had any gameplay-impacting packet loss problems in years, and I've been actively doing tick-perfect/high-level content every day for long hours.

restive garnet
#

Your experiences with 'packet loss doesn't affect my gameplay' are the exception, not the rule

rancid marten
#

i dont understand how this cant be negatively affecting you, maybe you are just used to it?

arctic surge
arctic surge
#

To restate @polar crypt's proposal, what's the harm in adding a toggle for % ping loss that is on by default?

rancid marten
#

it just doesn't make any sense to me

restive garnet
#

It's been said several times since it was first put in - ping alone is not indicative of connection quality

knotty kernel
#

What % of packet loss are you getting?

rancid marten
#

maybe runelite is broken? does running normal ping.exe show packet loss too?

sharp knot
#

I think having it available but on by default would at least cut back on people just complain about it even if turning it off gave a ~useless metric

But idrc either way

rancid marten
#

all of these cant be true at the same time:

  1. runelite is correct
  2. he has packet loss
  3. he is sensitive to packet loss and "subtle problems"
  4. packet loss is not affecting his gameplay
arctic surge
#

I agree that it doesn't make sense, but again, what's the harm is letting people who are bothered by the red text popping up just hide it? (defaulted ON, so regular support traffic is still reduced)

arctic surge
rancid marten
#

i dont like making changes to things for reasons i dont understand

#

this is possibly indicative of a larger issue with how we measure loss or something

arctic surge
#

But the reason in this case is simple, someone is bothered by the text appearing, and they just want it to be hidden

#

Let's say it's even real packet loss, but the player is not doing high-level context. Maybe they just don't want to see the red text

rancid marten
#

if its real loss the ping value is totally pointlesss so just turn the entire plugin off

heavy bobcat
arctic surge
restive garnet
#

Is this one of those weird cases where the intention of the plugin (to show connection quality) is not matching with how people actually use it (to find low ping worlds)

arctic surge
#

To find low ping worlds, or perhaps to distinguish between which region they are connected to (I listed a bunch of reasons above #development message)

restive garnet
#

People always seem to think that low ping alone = good (and I suppose not having packet loss shown for so long perpetuated that theory)

arctic surge
#

Here's another player who said he's in the same boat as me:

restive garnet
#

So, 3 out of ~200,000. That's not a huge sample size 😄

arctic surge
#

I can run that later today

rancid marten
#

or can you get like a tcpdump of it showing loss without any retransmits? that would be more useful maybe

#

the loss% is really percent of bytes retransmitted from tcp packet retransmits

quiet kettle
#

couldn't even say 20% packet loss be almost indistinguishable from no loss with how there's 600 ms per game tick, and people submitting actions right at the start of each tick?

upper valve
#

i could maybe see "packet loss threshold" being reasonable? like if it's just dropping 5% every now and again maybe it doesnt affect me that much and i only care if its like 25% or more?

quiet kettle
#

the point of the packet loss indicator is to let you know that it could impact your gameplay, surely

restive garnet
rancid marten
#

I dont think that the time between packet and retransmit is ever <1s is it?

quiet kettle
#

oh, that I don't know

#

if it's always that long then surely you'd feel it

rancid marten
#

its whatever the TCP RTO is, which is computed normally I think

#

idk if this is right

#

but even if it is right that is still like half a tick lmao

#

id have to research it more

quiet kettle
#

I guess it's still possible for the resubmit to be early enough to be unnoticeable

#

if it can go that low

upper valve
#

i assume whether you notice also depends on the packet being dropped

#

if all he's getting late is a wall object spawn every now and again then i would understand why it doesn't affect his gameplay

#

idk

restive garnet
#

Wouldn't the packet loss figure only be for outbound packets, though?

rancid marten
#

yes

upper valve
#

oh nvm

#

then yeah id think youd notice 5%

restive garnet
#

Maybe - a 1 in 20 chance of a click not registering

upper valve
#

unless there's more junk that the client is transmitting that isnt input

quiet kettle
#

btw I'm not suggesting that the red text should be hidden just because it may not be noticeable, I'm just chiming in

#

I don't think adding a toggle for it hurts, but it is kind of misguided wanting to disable it just because you don't feel it 😅

restive garnet
#

ok, dumb thought - do you think people would complain less if the text was yellow instead of red 😂

rancid marten
#

fwiw i see very very few complaints about this

upper valve
#

lol

rancid marten
#

like a handful or less

oak rock
#

prob not, i think the main part is it appearing and dissapearing in your peripheral

restive garnet
arctic surge
#

If we added a toggle, defaulted on, then everyone would be happy 😱

#

(except Adam)

#

😂

oak rock
#

then the people who turn it off and then experience loss will complain that runelite doesnt work instead of seeing that they have loss

rancid marten
#

id be super interested in seeing a video showing reported loss + tcpdump of the same window

arctic surge
#

Yea I'll leave it on today and see if I can record that

low jacinth
topaz pierBOT
#

Search for numbergroup returned no results.

knotty kernel
#

add a toggle but instead of turning it always off it turns it always on

oak rock
restive garnet
topaz pierBOT
knotty kernel
restive garnet
#

Oh, I know

#

I'm very much on the side of keeping it in

oak rock
#

i can understand clamping it and only show if its a high enough value, so intermittent 1% loss doesnt flash on and off

reef badger
#

@kindred gate can you look into this overflow from your prestige plugin, otherwise i gotta disable it as it's very broken

oak rock
#

NumberGoUp name checks out

rancid marten
#

oh that is interesting, is that a 237 regression?

reef badger
#

ig so according to this gh comment

rancid marten
#

what is it doing?

reef badger
#

i think it's supposed to be changing the skills back to 1 and then letting you level them up again

rancid marten
#

this person github says it "bricks runelite"

reef badger
#

yeah my client is frozen as fuck

rancid marten
#

ok, so disable the plugin

reef badger
#

with that stack

rancid marten
#

why is this a question

reef badger
#

idk ur the one who asked a question

#

i was just gonna give him a few min if he was around

rancid marten
sinful lava
#

not sure if relevant since I'm on Arch Linux btw, but i had tcpdump running targeting the world I'm on sudo tcpdump host oldschool161.runescape.com -w tcpdump.pcap, I saw 1% loss for a few seconds in RuneLite, stopped capturing, and wireshark shows 0 packets with the tcp.analysis.retransmission label

rancid marten
#

Oo, tbh the code for linux is completely different from the windows code

#

but that is interesting

ember flareBOT
rancid marten
#

can you debug it

sinful lava
#

I can take a peek yeah

rancid marten
#

you might have to dig into how the kernel counts retransmits vs how wireshark does

rancid marten
#

maybe prefer unavailable= to disabled= unless it is a super obscure plugin

reef badger
#

this one is sub 200 users so probably fine, but fair

rancid marten
#

is that true

reef badger
#

idk i should have put my cannon in my inventory before my membership ran out

#

i need a list of the best 28 items to carry around in f2p

restive garnet
#

28 bonds

valid wave
# ember flare

Isn't this because the latest update changed the constants for worldview? So anyone using -1, their plug-in is just not running. Mine is still waiting approval for three days

rancid marten
#

the cannon spots is a core plugin?

valid wave
#

Oh, how come it's not working, something else break?

rancid marten
#

I dont know if its not working, im asking if it is working

quick path
#

the cannon plugin is working, yes

stuck shale
#

the user didn't really provide where they were. They might not have a cannon or they might expect every spot a cannon can go to have a "best spot" marked

grizzled aspen
valid wave
#

That's fair, I've been putting it off for infernal cape and birthday, but I made sure to get it in before the update

upper valve
#

i have a second, link your pr please

grizzled aspen
upper valve
#

but seconded what pine said

#

i thought we said we weren't going to let you do the april fools thing

valid wave
#

If I do have a small change followed by a bigger update, would it be better to push two updates, one with the minor fix, then one with the full update? (Sorry, slow to respond, at work)

upper valve
#

if the small change is in the name of your plugin not being broken or breaking people, yes

rancid marten
#

we heavily prioritize plugin updates to keep plugins functional due to game updates

#

if you include it as part of normal big feature drops then it wont be

upper valve
#

i'm not merging this though because it has the april fools stuff in it which abex was saying he didnt want you doing

#

(im pretty sure)

valid wave
#

The April fools feature has been in there since last year, I made it clear which mod was causing it. It isn't malicious, and he was more saying that what I was trying to accomplish wasn't possible with the configs

#

It only triggers when you've been afk like at a bank for 5 minutes, and despawns on its own

rancid marten
#

i think its fine, if it causes a lot of problems we can just kill it

#

or, tell people to uninstall

valid wave
#

Yeah, that was one of the changes in this update, is informing which plugin and how to disable

#

Side note, I heard that the hitsplat system was eventually becoming an interface instead of a dummy object. One of my future features was to deprioritize others' hitsplats, is the hitsplatApplied event cancelable in any way? Like can you hide the rendering of hitsplats at all

ember flareBOT
#

This issue has come back for me even while on driver v591. Only thing that's changed is I'm running my laptop in Hybrid GPU mode (Optimus) instead of dGPU.

I switch my laptop between these modes depending on what I'm doing. I notice KCD2 only performs well in Hybrid, while OSRS stutters. In dGPU mode, KCD2 experiences this kind of FPS stuttering, while OSRS is clean.

Back to the drawing board.

rancid marten
#

not currently

#

that is something we could add an api for though

ember flareBOT
ember flareBOT
ember flareBOT
#

Type

Crash or hang

Operating System

Windows

OS Version

Windows 11 Pro 25H2 26200.8037

Bug description

I was just playing on my second monitor (a 4:3 800x600 CRT) and the game just completely freezes.
It doesn't respond to any inputs but the window stays resizable and runelite menus still partially function.
Alt+f4 does nothing. I have 4 custom plugins as far as I know. Quest Helper, Chat Panel, 117HD and WiseOldMan. (equipment instpect plugin too, but idk if thats stand...

torpid dagger
#

I know we have freeze timers, but are TB timers not allowed? Don't want to put effort in making one if not allowed

oak rock
#

thats already a thing

torpid dagger
#

It is?

oak rock
#

im pretty sure we show how long youre tbed for already

torpid dagger
#

I'll go double check rn, maybe I'm blind and dumb (very possible). We're not allowed to see freeze/tb's left on enemy though right?

oak rock
#

correct

torpid dagger
#

Aweseome, thanks for quick replies!

tulip wagon
# ember flare

@valid wave this merge failed due to some changes to the hitsplat api. can you submit a new version based on the latest runelite release?

valid wave
#

Latest? What changed?

tulip wagon
#
/tmp/pluginhub-package9457194867588630057/vitality/repo/src/main/java/com/natesky9/VitalityPlugin.java:191: error: Hitsplat is abstract; cannot be instantiated
#

new Hitsplat is no longer valid

#

i've not been following stuff enough to give more than that tbh

#

maybe @rancid marten can help you with the alternative

valid wave
#

Ahhh, I have to make my own extending it now? Dang

rancid marten
#

if you have to make your own hitsplat implementation it means your plugin is designed wrong

#

you should just make your own VitalityHitsplat class that doesnt implement Hitsplat and use that

low hatch
#

Saw y'all talking about ping earlier. Last week I was experimenting to see if I can get a better estimate of world pings, but lowkey I feel like it's pointless.

Take W329 for instance, a ToA mass world. The packet loss was said to be 0.04% on average with a ping of around 5ms. However, when I play on that world, it damn well feels like I'm playing either on US West/GB worlds with how my actions are delayed. Albeit, the pinging software I use pings once every 5 minutes, so perhaps it's not all too accurate since ping can fluctuate so much.

But I digress, that's why I rely on the Tick Tracker plugin. It's still not all too reliable since client lag/hangs or world/instance transitions will affect it. However, I feel like it's more reliable than knowing my ping when it comes to OSRS.

/essay

ember flareBOT
neon haven
low hatch
#

Ye I know I can but I wasn't sure if it'd be allowed/appropriate 😅

tight quarry
# ember flare

Interesting! Had the same issue quite a few times (i believe since the last game update).
Thought it was my plugin that I was working on but... maybe not..? No logs for me either and indeed responsive sidebar.

rancid marten
#

is this smokeping

low hatch
#

Ye

rancid marten
# ember flare

there was someone in #support with this earlier, thread dump showed an infinite loop in one of the client hashtable things

#

which means some off thread client access we dont have protected somewhere

#

theyre really hard to track down

tight quarry
#

And is basically caused by calling some function which is supposed to be called on the client thread, where basically all of them are "protected" with an assert?

So maybe there's one that was missed causing this? (Trying to understand)

rancid marten
#

yeah i try to add asserts to them all but theres so many

ember flareBOT
#

Type

Other

Operating System

None

OS Version

Windows 11

Bug description

So the quests mournings end part1 and 2 there's no UI for the barrels to show how to put the levers in the right positions like other quests

Screenshots or videos

No response

RuneLite version

The newer version

Logs

No response

reef badger
#

THE quest helper

#

THE newer version

ember flareBOT
rancid marten
#

The quest helper

ember flareBOT
ember flareBOT
snow needle
#

Are users ever forced to restart and update runelite / hub plugins? How frequently does that occur?

reef badger
#

u have to restart the client on game updates right?

lavish ice
#

outdated versions get black listed and people get login blocked if they logout

reef badger
#

adam does manually boot people off rl versions if there's a big enough problem

#

but otherwise only when game updates happen

snow needle
#

Do game updates always require restarts? I usually close my client when I'm done playing so I don't understand what happens for people that leave it open perpetually

reef badger
#

idk i dont play the game

#

i know there was some change which prompted adam to make it a point to add cross-restart xp tracking

#

because restarts were going to be required more often

late hare
#

Adam disabled the reload thing the client used to support I think, caused a bunch of weirdness with state being cached on startup in plugins

#

(well, I assume Adam)

snow needle
#

So basically they have to restart every week? SGTM TY

low hatch
#

Probably for the best anyway if you use lots of plugin hub plugins 😂

rancid marten
#

yea they have to restart with the weekly game updates

ember flareBOT
#

This PR adds a new !invite command, which lets the player easily create a new party with a passphrase of their choosing and send the invite to the chat, where it can be right clicked by others to join.

Here's some quick videos of the new command in action:

https://github.com/user-attachments/assets/415e58c8-cc21-4fb4-b0e7-69b14043bacf

https://github.com/user-attachments/assets/75886d87-f113-4a3f-b9a8-5817eee6ed39

true tusk
#

I know theres a lot of rules about plugins but is there a list of them anywhere?

topaz pierBOT
worthy sparrow
#

Eh

true tusk
rancid marten
#

you can definitely make a new window without a subprocess

#

what are you trying to do?

true tusk
#

I was just going to make a new window to display a graph that normally wouldn't fit in the side bar.

rancid marten
#

just new JPanel()

#

err JFrame

winged totem
#

Are there any core parts/workstreams that need help? Looking to start contributing

rancid marten
#

plugins are always a good place to start

winged totem
#

I worked on a fix for one recently but was curious about client etc. Would come up with plugin if I could ever actual ideate anything

true tusk
heavy bobcat
winged totem
#

Valid. Is there a place to find issues for each plugin without needing to check their repo?

stuck shale
#

Not really, you could maybe use a few and see a quirk you don't like or see a bug in them and then fix them that way

#

or go hunting

ember flareBOT
ember flareBOT
#
[runelite/static.runelite.net] New branch created: wiki-data-2026-03-27
hollow stratus
#

Seeing a lot of debug tracking lately brought back an idea I've always thought about implementing. It would be like git bisect and VSCode's Extension Bisect utility https://code.visualstudio.com/blogs/2021/02/16/extension-bisect#_welcome-extension-bisect. Basically, it speeds up finding the offending extension that is causing an issue by doing a binary search, toggling off/on extensions until the offending extension is found. I could see this help a lot of users when they have a ton of plugins and trying to figure out what plugin is causing a behavior they want to fix. I've seen so many reddit posts of people asking what plugin is causing their issue. not quite sure where functionality like this should exist in the client, assuming it was allowed

Find problematic extensions quickly with the Visual Studio Code extension bisect utility

ember flareBOT
#

Also experiencing this

Any update on this issue getting fixed? The plugin still has the same issues as it did when I created the initial report.
Mute other Player's area sounds does not do what it says, other players area sounds still play.

Yep, experiencing the same here after noticing why I couldn't hear my own teleport sounds.

I spoke with runelite devs, and due to jagex changing a lot of sounds ids, the fix isnt viable at this time. I personally turned the plugin fu...

prisma hornet
#

I'm trying to make a class to make a custom sound play whenever I get hit with dragonbreath, are there any events that would help me determine if I'm being attacked/targeted or not?

#

I don't want it to play just whenver the sound plays, only if the actor attacking me plays it

glass sandal
#

onHitsplatApplied?

prisma hornet
#

yeah that would work wouldn't it, it would have to be a non zero hit and it could go into that actor being the one to create that sound

#

going through the events list back and forth and didn't even consider one I've already used -_-

glass sandal
#

If the player has a hitsplat on them you know they're in combat

forest forge
#

client.getLocalPlayer().getInteracting(); to get who you're targeting. Compare against actor who played the sound?

#

Or does it originate from you

#

so that doesn't work

#

Oh i guess that also doesn't help if you're safespotting your target and another 1 attacks you, nvm

prisma hornet
#

yeah i want it to be them targeting me not the other way around 😅

#

HitsplatApplied should work

forest forge
#

I guess the only concern is how do you tell if the hitsplat came from dragonbreath instead of something else. The dragon makes the sound so you can check if that actor caused a hitsplat?

prisma hornet
#

it would be HitsplatApplied xxx && soundID = dragonbreath