Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plugin Support (RSProx/RuneLite) #34

Open
Z-Kris opened this issue Oct 20, 2024 · 0 comments
Open

Plugin Support (RSProx/RuneLite) #34

Z-Kris opened this issue Oct 20, 2024 · 0 comments
Assignees
Labels
documentation Improvements or additions to documentation

Comments

@Z-Kris
Copy link
Contributor

Z-Kris commented Oct 20, 2024

Note

This is simply documentation for a feature we could introduce in the future.
It is not currently in the plans as there are no concepts which could leverage it yet.

Problem

One of the feature losses we encountered when moving from the old Event Inspector client to RSProx is that we no longer have the ability to directly communicate with the client. We cannot provide our own custom plugins, nor can we edit anything. Both the client and RSProx are stand-alone tools which do not communicate with one another, only the original network traffic passes through RSProx.

What if we wanted to create a plugin which allowed us to communicate between RSProx and the RuneLite client? An example of this would be Cjay's dialogue plugin that was in the old Event Inspector. It marked NPCs which were already spoken to and requires some features that the official RuneLite does not support for accurate dialogues.

Solution

The RuneLite which RSProx launches enables developer tools and the use of side-loaded plugins, which are normally only possible in a development environment (running via IntelliJ). We could create our own plugins, one on RSProx's side, one on RuneLite's side, and allow them to be "downloaded" via RSProx's GUI, which essentially just copies the necessary jars to RuneLite's side-loaded plugins directory.
The two separate processes could communicate between one another using Unix Sockets and/or Java's WatchService.
This would allow us to pass precise packet-level information from RSProx to RuneLite, allowing the plugin to render and store data as per usual. In order to achieve this nicely, we would need to create a simple-to-use API that both the RSProx plugin and RuneLite plugin could utilize for communications between one another, such as passing primitive data types, strings and even serialized objects. Json would likely be a good fit for data transmission, but a nicer API should still sit on-top to allow calls such as readInt or readObject<Type>.

Note that this issue strictly applies to RuneLite, as we have no way of creating such plugins on the C++ clients.

@Z-Kris Z-Kris added the documentation Improvements or additions to documentation label Oct 20, 2024
@Z-Kris Z-Kris self-assigned this Oct 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant