#development
1 messages · Page 10 of 1
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
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
you sure it isn't erroring on getLocalPlayer() prior to logging in?
you probably aren't @Injecting something
that was my thought, but it errors before that. hence why the debug text isn't even firing
or that, probably client if it's outside of the main plugin class
if client is null because it isn't injected the println won't fire
it wouldn't print part of the debug text if it errors in that statement anyway
no, client is injected
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;
inject is new to me, so maybe I'm not using it right
because manual initialization will bypass the dependency injector
Ohhh, so it's redundant
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
I'm not sure I follow
I've removed the manual init, but isn't it already injected into client and plugin?
if you call new SecretFeature() manually nothing gets to look at @Inject so those fields will stay null
yeah, already got that, but I don't know what you meant after
so you do @Inject SecretFeature secretFeature instead
oh, from plugin -> inject secret
which makes guice call the constructor for you, at which point it will look for the @Injects and set those
yes
ok, that's the part I didn't understand
is this more lombok stuff, or is this something different
no, this is guice
you can tell because the package is com.google.inject
and not lombok.
ok, so I don't setter and getter this, I inject it instead?
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)
it needs to have a no-args constructor or one annotated @Inject
read your error message
hmm, yeah
click the top part of the left tree
some genius at jetbrains decided to make it hide most of your logs by default
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:
your constructor is throwing an exception, probably because its referencing an @Inject-ed field that hasn't been injected yet
is it because I need to use instance methods?
hmm, injected that hasn't been injected yet...
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
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?
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...
Oh, so singleton is required
so what advantage does this have over just... initialization?
I think you have code in your constructor, or a field with an ititializer that is referenceing something you are field injecting
that just tells guice to only ever make 1 instance of the class instead of making a new instance each time it's @Injected
not having to manually construct things that have a bunch of dependencies
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
I forget what the original issue even was lol, but this was educational
how can you do nested config options? like a config setting that is hidden unless another option is enabled?
You can’t
Hmm, can you have them hidden and toggle config options through the event?
Yes. Or just use configManager
hmm, that might be too much for what I'm trying to do
what are you trying to do
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
you can't do that
By toggle config options I thought you meant change a setting. You can’t hide and unhide configs
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
Secret just shows like a password input box so screenshots don’t leak data. I think wiseoldman uses it
so say I wanted to do something fun, is there really no way I can change the config layout
it is hard to give an answer when your questions are quite vague
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
i think something like that has been denied in the past?
I was hoping to have a config option a, checking that would proceed to reveal extra settings
ah, dang
or i was against it and someone else merged it i can't remember
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
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
no
eh, that's fine. I can still achieve what I'm going for with some clever design, but the lack of flexibility shows
what goes in a runnable if you need to use the client thread?
the code you want to run
we don't really like things like this because it confuses people, then they come to #support and ask why there are cabbage mages spawning all over and they have no idea what plugin is responsible for it
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
Hmm
how do you get your plugin's readme to be visible on the support page?
huh, in the swing panel, if I right click, the option isn't there
https://github.com/runelite/runelite/wiki/vitality
have to manually type in the plugin, but it just gives me a no perms error
Open source Old School RuneScape client. Contribute to runelite/runelite development by creating an account on GitHub.
It doesn’t if you’re running the plugin test
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
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
Yes, it acts like a core plugin which is why it links to the wiki
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
Whenever someone has free time. Days to weeks to months. You just have to wait
ok no problem, i'll continue to run it through intellij for now
4 days since last commit
FWIW I would avoid pushing more commits until your plugin finally gets reviewed/added - especially for new plugins.It may or may not result in your plugin taking longer to get reviewed due to the way some Plugin Hub reviewers sort PRs
i think i read about it saying it bumps me further back on the queue if you re-commit, i just found the odd error as the situation arose
Ye understsandable
@native notch ty
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
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
ive not really looked into ux at all, im only focusing on the ClientUI changes right now
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
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
this works more closely to how it should work
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
this doesnt have a right click menu or any dragging animation yet
Ping me if you want anything from me I haven’t looked at it in a long time
are you tylerwgrass in github?
yeah he is
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
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
yeah, I had initially used gson serialization of the entire nav button obj to get around that
afaik this is all you need for default ordering
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
lol
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 😭
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
wow 20000
speaking of commas breaking things, I raised this PR in Sept 2024 because it's not possible to pin the Dude, Where's My Stuff? plugin due to the comma https://github.com/runelite/runelite/pull/18274
.. lol
thank you ❤️
Adds a combo heal for Cooked Larupia to item stats
Instantly healing 6 hitpoints, then healing another 5 after a 7 tick delay (4.2s) for a total of 11 hitpoints.
I noticed this was the only hunter meat not listed in the itemstats
Is there a way to identify these easily en masse in the config file and adjust their coordinates?
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 🤣
which one?
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
i would guess no testing usually always replies here when asked to do mac stuff
Not everything uses FlatTextField and its more or less deprecated, so this should live in the LAF/somewhere else. Ideally FlatLAF gets support for it and we just use that
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
iirc its basically trivial to update, we have very few patches to it
its fine having it in runelite, it just shouldn't be in FlatTextField
Got you - I’ll rework it, thank you for looking at it!
I saw Thource replied (here: #development message) saying it works, so I didn't test it, sorry
I can test tomorrow (technically, today... I should go to sleep) if testing is still needed. Just let me know
Yeah it worked but only in some text fields, things like string inputs in plugin settings don’t use FlatTextField
Is there any progress with this? Have been wanting something like this for a very long time. Happy to lend a hand testing if needed!
Type
Incorrect behavior
Operating System
Windows
OS Version
windows 11
Bug description
Inventory tags does not load upon login, need to toggle off/on every time
Screenshots or videos
No response
RuneLite version
1.12.20
2.7.6
Logs
b72ebce API docs for 1.12.21 - RuneLite updater
d6b0640 Release 1.12.21 - RuneLite updater
[ https://github.com/CalebWhiting ] [ @late trail 310865584751509514 ] cwhiting#0
@late trail you around?
Why are these IDs removed from the NpcIDs file?
what?
9669-9674 are absent for some reason
youre using the wrong npcid file, use the gameval one
ah ok
@quiet kettle got about 82 crashes in the last half hr
sort of low volume
but i turned it off anyway
granted theres only ~12k people with this build
its ok we're going back anyway due to cg being broken
well its always been able to return null but now it does it very often
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.
I guess push their plugin to your pluginhub fork maybe
is it feasible to track moving of an item in the inventory? Something like a from and to index
abaa91e API docs for 1.12.21.1 - RuneLite updater
706b999 Release 1.12.21.1 - RuneLite updater
@hollow stratus did you work more on the sidebar reorder thing or are you waiting on me?
I wasn't exactly sure how collaboration would work in this instance, so I didn't make any changes. my PR is unchanged. I can bring your changes into my PR, if they're ready, but I wasn't sure when/if you were done with refactoring
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
if you think you can continue refactoring my branch that would be good
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...
87e3103 skill calc: fix camphor hull parts level - FalloutFalcon
nice c: my other tiny skill calc tweak pr is also up still btw.
This does not need a members override--camphor crates are members items.
CAMPHOR_CRATE(ItemID.CAMPHOR_CRATE, 62, 50),
fyi I committed that from the suggestion, no need for you to change it
sure thing. I'll bring your changes into a separate branch in my runelite fork and work on integrating them. I don't want to blow up your branch. Not sure I'd even have permissions lol
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?
are you feeding this to an llm or something
no lol
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"
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
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?
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
gotcha, yeah, I wasn't sure which direction. Whatever the decision, I'd love to get credit for the work (as well as pine)
define credit
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?
yeah i can add you and pine as coauthors
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
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
wonder how many people have the hub role
good to know! I've made PRs to plugins, but I haven't authored any myself
huh i'd expect more than 14 of the top 500 hub devs to be unregistered
well it wont kick ban your role just because u fall out of top 500
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
oh i see, the isMembers part of it kinda confused me so i got it backwards lol.
i guess i should have infered it looking at its usecases (all non-members items it seems)
Honestly I expected more mainline contributors
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
thanks adam for updating BTL ❤️
thats why im here
yeah
more evidence we should remove the menuAction thing
heh
only a few real uses of menuAction on the hub (13 plugins), not sure how important it is for them to have it
I audited it the other day ~all of them are for getting clogs
yeah thats what i am seeing
it's a 🤯 moment why nobody could figure out how to do the clog stuff on their own
and had to copy from wiki
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
Does GH allow take down requests of forks if you were to ask?
not for that sort of thing
also dont you literally develop bots
i thought infinitay was a good bean
Nope
If I did I would be maxed already 😔
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?
are you asking specifically about that dialog?
I check specifically for that dialog in one of my plugins, see here: https://github.com/Thource/simplifying-mixology/blob/46f1f0196b3173e0ee44b09841425138adb6179a/src/main/java/dev/thource/runelite/simplifyingmixology/SimplifyingMixologyPlugin.java#L244
yeah, actually. I don't suppose you're also trying to work on tracking the state of a previously-refined potion, are you?
I already did it 😄
hah
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?
I was trying to prove that it is feasible to track the potions made and drag them around while maintaining the type of refinement made. It works on the varbit changes but I'm now trying to get it to update from the widget screen upon inspect, which is only an edge case. With the current logic, it shouldn't need to inspect and capture the text, but I was adding it as a backup
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
your plugin isn't published yet, is it? I didn't see it in plugin hub
You can still break that without some kind of exposed event
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);
}
}
}
break what?
@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;
}
}
``` 😄
The drag tracking
Adam provided us a message a couple days ago for exactly how to do that: #development message
Cool I didn't read that far down
😂 I found it funny that 6013 is already taken by VarbitID.PET_INSURANCE_GARGBOSS
ah, thank you
is there an enum or data source for eventscript ids?
I hate magic numbers lol
no gameval, there is ScriptID, but it doesn't include a def for 6013
no, jagex doesnt publish their names
ah, ScriptID is what I was looking for
ScriptID is manually updated by us when we reference scripts in core, so it is not exhaustive
would it be crazy if I opened the tiniest PR to add 6013 for SCRIPT_INVENTORY_REORDER to ScriptID, even though there aren't yet usages in core?
yes
it wouldn't be crazy but we wouldn't accept it
😂 awww
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.
we're usually in the business of removing unused code in core, not adding more of it
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
That's fine really
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
ahh, so you're saying that sometimes jagex changes things and values like a scriptID would change, breaking things?
that could happen, yes
or is that just a possibility and hasn't happened with scriptIDs?
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
they only change id if their name changes
@hollow stratus or @grizzled aspen do you know what this isSelectedItemMoveable is for?
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
its in the cs2-scripts repo
Thanks
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.
Pine's looks like it's just a validity check for indicies. My equivalent checks the same but also if the hotkey is held
it doesnt really look like its just that
ahhh, his leaves the config plugin tab at index 0 always, iirc
i think it was to stop them from moving the runelite settings around
theres a bunch of logic here trying to determine if it should expand or contract the side panel too?
ran into that too, I added a hook to prevent that from happening
this is in the else {} so it doesnt run normally when things are moved
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
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
i cant remember atm, i'll set up later and see if i can find out if its garbage or not
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
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
f63232b agility: fix Trollheim shortcut levels - Nightfirecat
Fixed in f63232bb018f302ea7fadbe94f1078a06b5c4f77
9e0dbcd agility: fix Karamja spelling in enum - Nightfirecat
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
Idk ask hex, I'd say no because you don't actually know if it's really that one or not
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"
let me demonstrate further, it does
I know that you are doing
using another client or mobile between RL sessions would cause desync
Right or logging out or something
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
That will also break if you swap two potions of the same type
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
and here's the behavior when logging back in after swapping two potions of the same type in the same positions (middle two AAA potions were swapped Con <-> Hom). The two bottom corner potions were in the top left. Current behavior removes any label if there's no entry for that potion at that index.
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
plugins etc are free to make jtabbedpanes, its just like other other swing thing
ahhh gotcha gotcha
hannah always coming in with super helpful info 🙏🏼
eventually I would like to get rid of our custom tabs and just use JTabbedPane everywhere
@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
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
not sure what you mean, charging items is all server sided. if they open a dialog or something that might be able to be checked, but there isn't a cs2 specific to charging items
fyi polar = joshua lol
Oh... lmfao
it might be worth it to subclass jtabbedpane, i dont know yet
i think that is what you did right?
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
Yea the dialog is fine. I tried searching for "Venator Bow" text, but I couldn't find anything interface related. Would you mind, when you have time, helping me? Trying to single out a good time to check for inventory changes to track the charges for the Item Charges Extended plugin.
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
Oh wait 108
Isn't just about everything in that plugin just scraped from chat messages? Aside from a couple exceptions
108 is for any generic "enter number" dialog
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 👍
added in a38b363af96de247855295cc84d8e3d75e9a98f4
@jeremybahadirli I've done some touchups and commit squashing, can you check on the commits/changes in this PR once more? I think I'm happy with how they look now.
While I agree this item is missing, I'm inclined to introduce it via something like #19458 (or maybe something resembling #18533) as they would give a better indication of whether the totality of the healing provided would be fully applied or encounter hp caps.
@upper valve can you look at this fixed mode hide chat thing? I think it just needs a .build() on this script event
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...
yes later tonight
ty
Disabling github issues in plugin hub plugins should be illegal
It’s generally not allowed. But when making a fork issues are disabled by default and people forget to enable them
yeah, DragAndDropTabbedPane.java https://github.com/runelite/runelite/pull/19910/changes#diff-afff56d0d966205e5441d8790d51ce581d0b518f0dcad9c10159b92b625c7661
Type
Incorrect behavior
Operating System
Windows
OS Version
Windows 11
Bug description
Whenever I try to Menu Entry Swap NPCs it doesn't let me at all. Other objects do but they are also broken and show limited options.
Screenshots or videos
RuneLite version
1.12.21.1
2.7.7
Logs
We're aware of this and it will be fixed with the game update tomorrow
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()inRuneLiteTabbedPaneUI.javaand 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
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 ?
You can rely on core s stuff in a hub plugin. It’s not a barrier
Ok, thanks for the quick answer 😄
Clone core, you’ll see all the built in stuff it already has
yeah, you should be good. Plugin custom vital bars uses it, if you'd like a reference: https://github.com/qt31415926535-femboy/custom-vital-bars/blob/007d38312f9038de3a68bef25d58f5214aa2d237/src/main/java/com/neur0tox1n_/customvitalbars/CustomVitalBarsPlugin.java#L68
and they also made a hashmap of food with delayed heals (not all food items): https://github.com/qt31415926535-femboy/custom-vital-bars/blob/007d38312f9038de3a68bef25d58f5214aa2d237/src/main/java/com/neur0tox1n_/customvitalbars/DelayedHeals.java
i didn't even know delayed heals was a thing lmao tyvm
@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?
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?
You can PR it in advance and have someone add the hold-for-release tag
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?
if you need the changes then you should submit the changes separately and just set the old PR to draft
Well I think I need them? It rebuilds all the plugins with the new API and mine will fail to build, so what happens?
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?
cuz adam already pushed tomorrow's changes to the hub and rebuilt a ton of plugins
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?
mmm i'm not sure this is an abex question
I guess it's better to PR the patch separately because either way I probably have to reset my 5d wait time.
Ok well if it does break, please merge https://github.com/runelite/plugin-hub/pull/11208
Looks cool, my repo only displays text, I like the icons
you shouldn't be implementing api classes
713415f rl-client: update to 2026-3-25 - abextm
5729ed6 rl-client: fix ExamineItem - abextm
9d68eb6 Update Item variations to 2026-3-25 - RuneLite Cache-Code Autoupdater
4dee74c Update Legacy ID classes to 2026-3-25 - RuneLite Cache-Code Autoupdater
282010d Update Scripts to 2026-3-25 - RuneLite Cache-Code Autoupdater
f2df133 API docs for 1.12.22 - RuneLite updater
c2ecf03 Release 1.12.22 - RuneLite updater
b75a113 Update jav_config.ws - RuneLite updater
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.
Just pull the latest changes from git and remake the jar
Ok thanks, it there any docs to show me how to do that in Intellij?
Actually if it's a hub plugin all you need to do is remake it
Is it something to do with git pull
Gradle will pull the latest RL version automatically
It isnt, we just play it privately
I cloned a plugin and modifyed it, so we could play as a group
Gotcha, then yeah should just be able to rebuild the jar and it work
I'll try rebuilding the JAR first and see if it works
Gradle may cache the version tho, you can maybe run build --refresh-dependencies if it doesn't work and then rebuild the jar again
Ok thanks
Type
Incorrect behavior
Operating System
Windows
OS Version
11
Bug description
Runelite client has no sound when in game, login screen does have sound.
All my windows settings have it unmuted, every other game works as intended
Screenshots or videos
No response
RuneLite version
1.12.22
2.7.6
Logs
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 ...
all plug ins apper the same i cant find any settings that are different
deleting the files which hold the settings for the game will reset them to default, you need to change them again to what you want
what do i need to change i recently downloaded this to play with old account everything was that way when i downloaded first time then changed after i dont know what changed or how to change it back sorry if this is a stupid issue i know i caused it but any direction would be helpful
If you'd like, I can send you my code or make a small PR with the icons to your plugin. Let me know
Skill icons with different widths would cause text alignment issues for Boosts Information's compact display.
| Before | After |
|---|---|
Ack I will change it. Can you help me understand why my plugin is not broken right now? Do I need to fix it before any point in time?
Instead of setting this after looping the skill icons, you can set a starting value of maxIconWidth = Math.max(BUFFED.getWidth(), DEBUFFED.getWidth())
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..?
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
Are you running an up-to-date client?
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
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)
What is the client version in
?
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-...
The client freeze and equipment bug by the way also happened using the official runelite client
hmm
This is from the non-plugin one/official runelite client
Ye I've been seeing that since the last few days now. Happens mostly whenever you first start the client, so I feel like they changed when events are subscribed now but idk. Just how I think of it.
I refreshed my gradle sources and I'm dealing with that too. Although my RL version is 1.12.21 😂 Probably need to restart Intellj/invalidate it but too lazy atm. Maybe after I commit.
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)
FWIW my equipment tab isn't empty on 1.12.21. My guess is a plugin is interfering with it since I'm on an older version than you and I can see my equipment. FWIW my timestamps/bank pin plugins aren't working correctly which I assume is due to the outdated client - hence why I say it could be plugin related.
If I wear the egg it's fine. I can also logout and log back in, still fine. If I restart the client with the egg equipped, then I get this issue every time. Equiping another item and then re-equiping the egg, it's still fine
does this happen in safe mode?
Hmm.. Looks like it doesn't!
I'll try and restart with most of the external plugins disabled and see from there
A PR would be great, are you using images? If so you could use spritemanager instead to get the sprites on the fly
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
Enabling it in safe mode also didn't seem to cause the issue, however.. I guess even if you enable the plugin in safe-mode, it'll still not do it's thing. Which also explains why it doesn't break in safe mode
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
I don't believe there is one.
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?
You can only detect if it's not started, in progress, or completed
(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..!
Yeah, that's most likely the simplest answer
- check if completed
if not, prompt to open + check
I just logged in for the first time today (so no freeze or new egg) and my equipment is empty lol
just relogging fixed it though
poggers
There was a new update today, right?
I updated my plugin because something was getting deprecated
yep, rev237 update.
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.
Is there any update on this? or is it simply in queue for review/adding? really nice feature
Haven't had any feedback on it so I believe this is still just awaiting review.
the plugin hub stuff that rebuilds plugins doesn't think your plugin needed to be recompiled because no one i supposed to implement api classes. It still works at runtime because the jvm only checks that a method is actually implemented when its called, and since nothing will call those methods it will never throw
Brilliant, thanks!
so if it decides your plugin needs to be rebuilt it will fail then
Got it I will have to update my current PR then
why are you implementing api classes?
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
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
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).
something has changed with it that broke clue scroll loot tracking, not sure what
https://youtu.be/oWwJdGzunAY?si=0s52rdkBbBW6woJL&t=710
I'm guessing whatever plugin this is is being side loaded locally and isn't on the hub, but figured I'd drop it in just to check. Someone in my cc pointed it out
I saw someone report the clue scroll tracking wasnt working earlier too
interesting
its definitely broken
there was some engine change around the ItemContainerChanged event
my guess is that the server is sending inv events earlier than it used to
but id assume if ItemContainerChanged was broken there would be more things broken
mmm
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
oh this is just a straight up client bug
ree
im surprised that this is working really at all
lol
famous last words
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
inv packets always come before interface opening
ahh
so works by accident
"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
lol wtf
yeah
more than 1 problem with hitmarks 😭
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
is that them reusing the same component for all spellbooks
yeah
Does that mean they will use different sprites for each one
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.
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)
...
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?
How are the loaders in the cache tools in runelite tested? Can they be wrong?
yeah definitely
ah ok thanks
any login screen background powerusers here?
like via resource packs or login.png or any combination
i've been known to dabble
can you test something in a minute
sure
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
and check the world switcher
yes
neat
its using the mobile login screen
how many of the old login screens are there expanded versions of?
none
unfortunate
these guys
its probably possible to datadump them from old caches
looks like they do https://oldschool.runescape.wiki/w/Main_Menu/Login_screens
second gallery
not all though
which makes sense
anything else need testing?
I guess resource packs if you use those
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
does that only happen with resource packs?
none of the built-in ones do it but if I make one less wide it does it too
can you give me one of the images
mm yeah i see
seems like every resource pack that includes its own does this because their guide size is less than the real width of the flames
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
if it is much less than 383 it still has issues on the right
this kind of sucks to fix
can you get me the image it uses for this
yeah i see mm
on the normal login screen the fires are actually 22px wider than what it displays, it cuts it off
yes
which I think is new
so it stops cropping the flames if width > 383px
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
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
...
1min ill get another build
this should work ok with 383px, 765px, and then anything >765px
.. which is 3 different codepaths
lol
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?
im only expanding the clip area by 22px so i would expect 815 to be ok i think
easier to see, this is 766px
anything >= 765+22 would work i think
actually maybe it would be 765+22+22
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
the left flame just seems to be wider
yeah i think the answer here is just dont make dumbly sized login screens
as long as 765 is ok that is good
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
if youre curious this is what it does if you just feed it titlewide without fixing the fire clipping
mm I hate that
can you make it not cull the flames at all so I can have the trippy stacking?
no because it uses the background painting over it to cull it
makes sense
@Nightfirecat Looks good to me.
did anyone figure out which plugin was causing empty equipment?
hmm?
this thing
relogging doesn't seem to fix it for me :/
swapping a piece of clothing seems to fix it ... restarting runelite causes it to go empty again
oh well, should workaround for now! ty
thats interesting since it is not that broken for me
either way im going to patch it
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
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.
fc89d57 Update pvp-performance-tracker to v1.7.3 (#11219) - Matsyir
7356398 Update party-defence-tracker to v1.2.1 (#11205) - Hyftar
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?
client.getMessages().toString() isnt anything and so this just looks made up
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 🙁
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 😄
My hero! Thnx! That would've taken me quite a bit more minutes to find haha 😄
Would a plugin which configures plugin presets (similar to https://github.com/antero111/plugin-presets - or even added to that) based on the room you're in be something that was considered?
An example of a usage might be switching a tick metronome tick count or hiding other players in Wardens
(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:
- 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.
You probably want to use https://static.runelite.net/runelite-api/apidocs/net/runelite/api/events/HitsplatApplied.html
I saw that, but I didn't see any methods for determining it's non-zero for instance
hitsplatApplied.getHitsplat().getAmount()
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?
Hmm, so I got a java.lang.NullPointerException: null
it's pointing to the empty line under my if statement of the class
did you make changes and not reload
i dont think so, ill reload just in case
Are you actually subscribing to HitsplatApplied?
yes, onGameTick(event) in my plugin file
That's not subscribing to the HitsplatApplied event
i think i follow, back to the lab
You can reference this
https://github.com/runelite/runelite/blob/2b2e88c38d51cb352b1222a247addba2e93b2fac/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java#L360
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
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
Copy, thanks
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
do you normally play with loss? why is that normal?
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
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?
because i dont believe that
and also because the ms value is sort of pointless to have if you have loss
It's not pointless, that value is useful to me
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
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.
Your experiences with 'packet loss doesn't affect my gameplay' are the exception, not the rule
i dont understand how this cant be negatively affecting you, maybe you are just used to it?
I share the sentiment of this suggestion: #development message
No, I've had bad packet loss problems many years ago and this is not it lol. I'm very sensitive to subtle problems
To restate @polar crypt's proposal, what's the harm in adding a toggle for % ping loss that is on by default?
it just doesn't make any sense to me
It's been said several times since it was first put in - ping alone is not indicative of connection quality
What % of packet loss are you getting?
maybe runelite is broken? does running normal ping.exe show packet loss too?
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
all of these cant be true at the same time:
- runelite is correct
- he has packet loss
- he is sensitive to packet loss and "subtle problems"
- packet loss is not affecting his gameplay
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)
Like around 5% when it shows
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
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
if its real loss the ping value is totally pointlesss so just turn the entire plugin off
Then they wouldn't want to see ping either
I disagree with this, maybe the player still cares about the 95% case where no packet loss is happening, where they get 200+ ping on an aus world
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)
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)
People always seem to think that low ping alone = good (and I suppose not having packet loss shown for so long perpetuated that theory)
Here's another player who said he's in the same boat as me:
?
So, 3 out of ~200,000. That's not a huge sample size 😄
I can run that later today
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
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?
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?
the point of the packet loss indicator is to let you know that it could impact your gameplay, surely
Right, but that doesn't seem to be why people use the output, hence all the requests to be able to hide the packet loss element
I dont think that the time between packet and retransmit is ever <1s is it?
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
I guess it's still possible for the resubmit to be early enough to be unnoticeable
if it can go that low
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
Wouldn't the packet loss figure only be for outbound packets, though?
yes
Maybe - a 1 in 20 chance of a click not registering
unless there's more junk that the client is transmitting that isnt input
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 😅
ok, dumb thought - do you think people would complain less if the text was yellow instead of red 😂
fwiw i see very very few complaints about this
lol
like a handful or less
prob not, i think the main part is it appearing and dissapearing in your peripheral
then maybe the answer is to always show it even if it's zero, but that will probably cause more problems than it fixes 😄
If we added a toggle, defaulted on, then everyone would be happy 😱
(except Adam)
😂
then the people who turn it off and then experience loss will complain that runelite doesnt work instead of seeing that they have loss
id be super interested in seeing a video showing reported loss + tcpdump of the same window
Yea I'll leave it on today and see if I can record that
It's probably this because a lot of people use the tick tracker plugin which continuously shows the % at all times, albeit not the same way of tracking stability
Search for numbergroup returned no results.
add a toggle but instead of turning it always off it turns it always on

So basically how it was before the loss output was added 😂
[ https://github.com/DevMisery ] [ @kindred gate 1091184300411584612 ] im_e1#0
which is exactly why it was added
i can understand clamping it and only show if its a high enough value, so intermittent 1% loss doesnt flash on and off
@kindred gate can you look into this overflow from your prestige plugin, otherwise i gotta disable it as it's very broken
NumberGoUp name checks out
oh that is interesting, is that a 237 regression?
what is it doing?
i think it's supposed to be changing the skills back to 1 and then letting you level them up again
this person github says it "bricks runelite"
yeah my client is frozen as fuck
ok, so disable the plugin
with that stack
why is this a question
idk ur the one who asked a question
i was just gonna give him a few min if he was around
why are you not immediately disabling the plugin
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
Oo, tbh the code for linux is completely different from the windows code
but that is interesting
can you debug it
I can take a peek yeah
you might have to dig into how the kernel counts retransmits vs how wireshark does
if a plugin is totally crashing runelite the answer is always just disable it immediately
maybe prefer unavailable= to disabled= unless it is a super obscure plugin
this one is sub 200 users so probably fine, but fair
is that true
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
28 bonds
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
the cannon spots is a core plugin?
Oh, how come it's not working, something else break?
Seems fine to me, make sure you have a full cannon in your inventory.
<img width="1040" height="532" alt="Image" src="https://github.com/user-attachments/assets/ca09716d-975c-4ae3-ab08-9af24a028c87" />
I dont know if its not working, im asking if it is working
the cannon plugin is working, yes
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
in the future if you are asked to make an update that will stop your plugin from breaking, please just include the small change instead of in a batch with a bunch of other random stuff
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
i have a second, link your pr please
but seconded what pine said
i thought we said we weren't going to let you do the april fools thing
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)
if the small change is in the name of your plugin not being broken or breaking people, yes
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
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)
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
i think its fine, if it causes a lot of problems we can just kill it
or, tell people to uninstall
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
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.
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...
I know we have freeze timers, but are TB timers not allowed? Don't want to put effort in making one if not allowed
thats already a thing
It is?
im pretty sure we show how long youre tbed for already
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?
correct
Aweseome, thanks for quick replies!
<img width="2559" height="1438" alt="Image" src="https://github.com/user-attachments/assets/2bbd4603-f723-4bec-bb49-d9c4d7dcfeb7" />
update, it fk happened again
<img width="3360" height="1440" alt="Image" src="https://github.com/user-attachments/assets/ea694535-e30b-490e-87b2-c5ddf7a9878b" /> again
@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?
Latest? What changed?
/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
Ahhh, I have to make my own extending it now? Dang
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
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
If RuneLite's sidebar still works when it freezes like this, can you install the Debug Helper plugin from the plugin hub and in its sidebar panel (green bug icon) click on Dump threads and paste that here?
the pinging software I use pings once every 5 minutes
you can change that, its the step value in config I think if you want to try
Ye I know I can but I wasn't sure if it'd be allowed/appropriate 😅
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.
is this smokeping
Ye
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
Is it related to this type of log..? 2026-03-25 16:35:59 CET [Client] WARN injected-client - Mismatch in overlaid cache archive hash for 12/1049
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)
yeah i try to add asserts to them all but theres so many
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
Try reproducing it on a clean profile or Safe Mode with all external plugins disabled.
Support for hub plugins should be directed to the author of the plugin.
You can find the support link by searching for the plugin in the Plugin Hub panel and clicking the ? button on the plugin, or by right-clicking the plugin in the plugin panel and clicking the Support menu option.
The quest helper
Are users ever forced to restart and update runelite / hub plugins? How frequently does that occur?
u have to restart the client on game updates right?
outdated versions get black listed and people get login blocked if they logout
adam does manually boot people off rl versions if there's a big enough problem
but otherwise only when game updates happen
on next login attempt*
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
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
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)
So basically they have to restart every week? SGTM TY
Probably for the best anyway if you use lots of plugin hub plugins 😂
yea they have to restart with the weekly game updates
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
I know theres a lot of rules about plugins but is there a list of them anywhere?
Jagex's third party client guidelines: https://secure.runescape.com/m=news/third-party-client-guidelines?oldschool=1
Additionally, these features have been rejected or removed from RuneLite: https://github.com/runelite/runelite/wiki/Rejected-or-Rolled-Back-Features
Eh
"Execution of external programs (e.g. subprocesses) via any means"
Does this also include making subprocesses? So I can't make a new window to display information
you can definitely make a new window without a subprocess
what are you trying to do?
I was just going to make a new window to display a graph that normally wouldn't fit in the side bar.
Are there any core parts/workstreams that need help? Looking to start contributing
plugins are always a good place to start
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
theres a ton of plugin ideas people post on reddit if you search "runelite plugin idea"
you can also contribute to existing plugins. Don't have to create a new one
Valid. Is there a place to find issues for each plugin without needing to check their repo?
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
62470b3 update boomerangbandits to v1.2 (#11139) - ostechgit
fb0d363 Update wiki data - RuneLite Wiki Scraper
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
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...
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
onHitsplatApplied?
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 -_-
If the player has a hitsplat on them you know they're in combat
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
yeah i want it to be them targeting me not the other way around 😅
HitsplatApplied should work
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?
it would be HitsplatApplied xxx && soundID = dragonbreath