adamk33n3r / runelite-watchdog

Custom notification plugin for RuneLite
BSD 2-Clause "Simplified" License
6 stars 24 forks source link

Unable to open alert settings? #113

Closed otygah closed 1 year ago

otygah commented 1 year ago

Clicks aren't opening up settings for alerts - other buttons are working.

https://github.com/adamk33n3r/runelite-watchdog/assets/141585949/8f7e7fa3-5f74-4606-9057-d16317bd0e5e

adamk33n3r commented 1 year ago

Can you check your logs? Is it every alert? Or just some? What about new ones?

otygah commented 1 year ago

It's happening on all currently created alerts, as well as any clones I make of current alerts. However, the buttons on newly created alerts work. Could you explain what you mean by checking the logs?

adamk33n3r commented 1 year ago

The runelite logs in C:\Users\<username>\.runelite\logs\client.log.

That's interesting. I'm guessing something didn't get upgraded in your alerts from a newer version. If you export your alerts and send them to me I can take a look and try to fix it so you can re-import it.

otygah commented 1 year ago

Ah, sorry, I think I figured out the cause of the problem - I recently made a copy of my runelite profile for playing leagues on - going back onto my main profile allows me to tweak them. Is this intended though? I assumed that alerts are universal for all profiles as they show up on all of them. Also, the reason I started trying to tweak them is as one wasn't working, which I now assume is because I'm on a different profile than the one I created it on. Unsure if this is intentional.

adamk33n3r commented 1 year ago

that's definitely not intended. weird that a new copy would cause errors. but i'd still like to see your log (after trying to open it) and your exported alerts.

otygah commented 1 year ago

I think these logs look like the issue. This same block of text appears to repeat multiple times throughout the log but I just pasted one instance of it:


2023-11-22 00:06:21 GMT [AWT-EventQueue-0] ERROR net.runelite.client.RuneLite - Uncaught exception: com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) Error injecting method, java.lang.IllegalArgumentException: invalid range properties at com.adamk33n3r.runelite.watchdog.ui.panels.NotificationsPanel.rebuild(Unknown Source) while locating com.adamk33n3r.runelite.watchdog.ui.panels.NotificationsPanel

1 error at com.google.inject.internal.Errors.throwProvisionExceptionIfErrorsExist(Errors.java:486) at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:67) at com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:987) at com.adamk33n3r.runelite.watchdog.ui.panels.AlertPanel.addNotifications(AlertPanel.java:287) at com.adamk33n3r.runelite.watchdog.ui.alerts.GameMessageAlertPanel.build(GameMessageAlertPanel.java:16) at com.adamk33n3r.runelite.watchdog.ui.panels.AlertPanel.rebuild(AlertPanel.java:304) at com.adamk33n3r.runelite.watchdog.ui.panels.AlertPanel.onActivate(AlertPanel.java:311) at net.runelite.client.ui.MultiplexingPluginPanel.pushState(MultiplexingPluginPanel.java:68) at com.adamk33n3r.runelite.watchdog.WatchdogPanel.openAlert(WatchdogPanel.java:182) at com.adamk33n3r.runelite.watchdog.ui.AlertListItemNew.lambda$rebuild$2(AlertListItemNew.java:144) at com.adamk33n3r.runelite.watchdog.ui.panels.PanelUtils.lambda$createActionButton$1(PanelUtils.java:140) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at org.pushingpixels.substance.internal.utils.RolloverButtonListener.mouseReleased(RolloverButtonListener.java:126) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source) at java.desktop/java.awt.Component.processMouseEvent(Unknown Source) at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source) at java.desktop/java.awt.Component.processEvent(Unknown Source) at java.desktop/java.awt.Container.processEvent(Unknown Source) at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.lang.IllegalArgumentException: invalid range properties at java.desktop/javax.swing.DefaultBoundedRangeModel.(Unknown Source) at java.desktop/javax.swing.JSlider.(Unknown Source) at java.desktop/javax.swing.JSlider.(Unknown Source) at com.adamk33n3r.runelite.watchdog.ui.notifications.VolumeSlider.(VolumeSlider.java:10) at com.adamk33n3r.runelite.watchdog.ui.notifications.panels.SoundNotificationPanel.(SoundNotificationPanel.java:36) at com.adamk33n3r.runelite.watchdog.ui.panels.NotificationsPanel.addPanel(NotificationsPanel.java:115) at com.adamk33n3r.runelite.watchdog.ui.panels.NotificationsPanel.rebuild(NotificationsPanel.java:94) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:70) at com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:89) at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:132) at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:93) at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:80) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085) at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:80) at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:62) ... 46 common frames omitted


Exported Alerts:


[{"type":"ChatAlert","message":"You have been poisoned!","regexEnabled":false,"enabled":true,"name":"Poison","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"You have become diseased!","regexEnabled":false,"enabled":true,"name":"Disease","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"You have been poisoned by venom!","regexEnabled":false,"enabled":true,"name":"Venom","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"You have a funny feeling like you\u0027re being followed.","regexEnabled":false,"enabled":true,"name":"Pet 1","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"You feel something weird sneaking into your backpack.","regexEnabled":false,"enabled":true,"name":"Pet 2","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"You have a funny feeling like you would have been followed...","regexEnabled":false,"enabled":true,"name":"Pet 3","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"The effects of the divine potion have worn off.","regexEnabled":false,"enabled":true,"name":"Divine potion","debounceTime":5000,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"Your divine potion effect is about to expire.","regexEnabled":false,"enabled":false,"name":"Divine Potion (Remedy)","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\ticktock.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"Valuable drop:","regexEnabled":false,"enabled":true,"name":"Valuable drop","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"Your Ring of Recoil has shattered.","regexEnabled":false,"enabled":true,"name":"Ring of Recoil break","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"Your cannon is out of ammo!","regexEnabled":false,"enabled":false,"name":"Cannon","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"Your antifire potion has expired.","regexEnabled":false,"enabled":true,"name":"Antifire","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"The effects of your Menaphite remedy have worn off, and you feel normal again.","regexEnabled":false,"enabled":false,"name":"Menaphite Remedy","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"A colossal wave closes in...","regexEnabled":false,"enabled":true,"name":"Tempoross Wave","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"A superior foe has appeared...","regexEnabled":false,"enabled":true,"name":"Superior","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"A bird\u0027s nest falls out of the tree.","regexEnabled":false,"enabled":false,"name":"Bird Nest","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"return to a Slayer master.","regexEnabled":false,"enabled":true,"name":"Task","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"A portal to the huge guardian fragment mine has opened to the","regexEnabled":false,"enabled":false,"name":"GOTR Portal","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":5}]},{"type":"ChatAlert","message":"Your Binding necklace has disintegrated.","regexEnabled":false,"enabled":true,"name":"Binding Necklace break","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":5}]},{"type":"ChatAlert","message":"The rift will become active in 5 seconds.","regexEnabled":false,"enabled":true,"name":"GOTR Round Start","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":8,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":5}]}]

adamk33n3r commented 1 year ago

Ok ya, see the "invalid range properties"? I changed the range at which we stored volume (used to be a db value, but converted it to 1-10) and that should have been upgraded/converted for you so I'm not sure why it hasn't.

That being said, the exported alerts you sent me look fine. Did you send me the ones from your "working" profile? Or the leagues one that is broken?

adamk33n3r commented 1 year ago

I've been meaning to buff up the panel logic to handle cases like this cause i honestly see it more than I would expect. But the upgrade logic is finicky so I'm not surprised.

otygah commented 1 year ago

Not sure for certain which profile I had selected at the time of exporting those previous alerts - although I exported them again to check and I'm now noticing that the gain for alerts is 11, so I'm guessing it was the working one beforehand. I assume this is the problem you were referring to with the new converted values, and why my alert sounds aren't firing?


[{"type":"ChatAlert","message":"You have been poisoned!","regexEnabled":false,"enabled":true,"name":"Poison","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"You have become diseased!","regexEnabled":false,"enabled":true,"name":"Disease","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"You have been poisoned by venom!","regexEnabled":false,"enabled":true,"name":"Venom","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"You have a funny feeling like you\u0027re being followed.","regexEnabled":false,"enabled":true,"name":"Pet 1","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"You feel something weird sneaking into your backpack.","regexEnabled":false,"enabled":true,"name":"Pet 2","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"You have a funny feeling like you would have been followed...","regexEnabled":false,"enabled":true,"name":"Pet 3","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"The effects of the divine potion have worn off.","regexEnabled":false,"enabled":false,"name":"Divine potion","debounceTime":5000,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"Your divine potion effect is about to expire.","regexEnabled":false,"enabled":false,"name":"Divine Potion (Remedy)","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\ticktock.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"Valuable drop:","regexEnabled":false,"enabled":true,"name":"Valuable drop","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"Your Ring of Recoil has shattered.","regexEnabled":false,"enabled":false,"name":"Ring of Recoil break","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"Your cannon is out of ammo!","regexEnabled":false,"enabled":true,"name":"Cannon","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"Your antifire potion has expired.","regexEnabled":false,"enabled":true,"name":"Antifire","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"The effects of your Menaphite remedy have worn off, and you feel normal again.","regexEnabled":false,"enabled":false,"name":"Menaphite Remedy","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"A colossal wave closes in...","regexEnabled":false,"enabled":false,"name":"Tempoross Wave","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"A superior foe has appeared...","regexEnabled":false,"enabled":true,"name":"Superior","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"A bird\u0027s nest falls out of the tree.","regexEnabled":false,"enabled":false,"name":"Bird Nest","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"return to a Slayer master.","regexEnabled":false,"enabled":true,"name":"Task","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":1}]},{"type":"ChatAlert","message":"A portal to the huge guardian fragment mine has opened to the","regexEnabled":false,"enabled":false,"name":"GOTR Portal","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":5}]},{"type":"ChatAlert","message":"Your Binding necklace has disintegrated.","regexEnabled":false,"enabled":false,"name":"Binding Necklace break","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":5}]},{"type":"ChatAlert","message":"The rift will become active in 5 seconds.","regexEnabled":false,"enabled":false,"name":"GOTR Round Start","debounceTime":0,"notifications":[{"type":"Sound","path":"C:\Users\eddie\.runelite\notification.wav","gain":11,"fireWhenFocused":true,"fireWhenAFK":false,"fireWhenAFKForSeconds":5}]}]

adamk33n3r commented 1 year ago

ya im super surprised that you copying a profile did that, not sure how it could ever be 11 lol. I wouldn't think it would prevent the alerts from actually firing and playing the sound. But it would prevent you from opening the panel. The range before was -25 to 5. So weird! So ya, you can fix it by replacing the 11 with some number between 1 and 10 and re-import them. And make sure the backslashes are doubled in your paths. Like C:\\Users\\eddie\\.runelite\\notification.wav.

Let me know if it works out.

otygah commented 1 year ago

This worked - buttons as well as alerts firing. Thank you!!

adamk33n3r commented 1 year ago

Good to hear!