Coder Social home page Coder Social logo

runelite / runelite Goto Github PK

View Code? Open in Web Editor NEW
4.6K 99.0 5.1K 69.77 MB

Open source Old School RuneScape client

Home Page: https://runelite.net

License: BSD 2-Clause "Simplified" License

Java 99.28% Shell 0.01% GLSL 0.50% C 0.20% Witcher Script 0.02%
runescape oldschool-runescape osrs

runelite's Introduction

runelite CI Discord

RuneLite is a free, open source OldSchool RuneScape client.

If you have any questions, please join our IRC channel on irc.rizon.net #runelite or alternatively our Discord server.

Project Layout

  • cache - Libraries used for reading/writing cache files, as well as the data in it
  • runelite-api - RuneLite API, interfaces for accessing the client
  • runelite-client - Game client with plugins

Usage

Open the project in your IDE as a Maven project, build the root module and then run the RuneLite class in runelite-client.
For more information visit the RuneLite Wiki.

License

RuneLite is licensed under the BSD 2-clause license. See the license header in the respective file to be sure.

Contribute and Develop

We've set up a separate document for our contribution guidelines.

runelite's People

Contributors

abextm avatar adam- avatar alexanderhenne avatar alexsuperfly avatar broooklyn avatar deathbeam avatar dekvall avatar dennisdev avatar devinfrench avatar enriath avatar felanbird avatar kamielvf avatar llemonduck avatar macweese avatar magicftail avatar melkypie avatar meslewis avatar nightfirecat avatar psikoi avatar raiyni avatar sethtroll avatar someonewithaninternetconnection avatar soychai avatar testing-ongithub avatar thestonedturtle avatar trevor159 avatar trimbe avatar tylerthardy avatar wooxsolo avatar yvesw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

runelite's Issues

Clue scroll plugin - Missing guide for aggie

Clue scroll plugin is missing guide for this cryptic clue:

Aggie I see, Lonely and southern I feel I am neither inside nor outside the house yet no house would be complete without me. Your treasure lies beneath me. 

Slayer plugin - Task carrying over to other accounts

Detailed Problem:
Slayer task amount is only saved for the client, not per account. As a result, when a user switches accounts it will still show the slayer task from the previous account, and even progress the task if not checked on the new account.
Cause/Limitations:
Slayer task amount is saved as an extra variable in the saved plugin settings. There is no distinction between different accounts, because plugins settings are global between all accounts, Plugin settings currently do not support saving Maps because the database is not structured to handle them.

Kill count command

It would be nice to have the "!kc" command in the RuneLite as well. I don't know how hard that would be, but it is doable I think.

Make resizable-mode work

If you put the client in resizable mode and change the size of the screen, the ClientPanel does not change size. This is because the ClientPanel is not anchorred to the ClientUI's borders because it uses a FlowLayout.

I tried changing the code to:

                container = new JPanel();
                container.setLayout(new BorderLayout(0, 0));

//		container.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));

		panel = new ClientPanel();
		container.add(panel, BorderLayout.LINE_START);

		navigationPanel = new NavigationPanel();
		container.add(navigationPanel, BorderLayout.LINE_END);

		add(container);

If you change the height of the client now, when its in resizable mode, the client actually gets bigger. The NavigationPanel should have a max width, because with this solution, if you change the width, only the NavigationPanel gets wider. Im not sure yet how to solve that, but i'll post my answer when i find out.

The slayer plugin infobox doesn't show/hide on config change

The infobox displaying the information about what you're meant to be slaying doesn't appear/disappear immediately when the slayer plugin (or its "Task InfoBox" setting) is enabled/disabled. The infobox will only update after checking your enchanted gem, or restarting runelite completely.

Boosts plugin - Missing skills from boosts info

Current included skills in the boosts plugin (in the BoostsOverlay.java)are:

	private static final Skill[] COMBAT = new Skill[]
	{
		Skill.ATTACK, Skill.STRENGTH, Skill.DEFENCE, Skill.RANGED, Skill.MAGIC
	};
	private static final Skill[] SKILLING = new Skill[]
	{
		Skill.COOKING, Skill.WOODCUTTING, Skill.FLETCHING, Skill.FISHING, Skill.FIREMAKING, Skill.CRAFTING,
		Skill.SMITHING, Skill.HERBLORE, Skill.AGILITY, Skill.THIEVING, Skill.SLAYER, Skill.FARMING, Skill.RUNECRAFT,
		Skill.HUNTER, Skill.CONSTRUCTION
	};

so there are in total 7 (6, not including Hitpoints) skills that are missing from the SKILLING list. For example Mining. The solution would be simply to add the missing skills to the SKILLING list and everything else should start working.

Instance map doesn't show walls

Instance map leaves black tiles on walls, bridges, and some water tiles near the shore. Tried my hand at adding this, but no luck.

Native desktop notifications

Hello, I just found out about this awesome project. I tried running it on OSX, and I tried the idle plugin, and based on source code I found out that you are using TrayIcon to send notifications, what seems to not work under OSX.

What about sending the native notifications? I was using plugin for maven called maven-notifier that was sending notifications on build success/failure and it was correctly sending native notifications on Windows, Linux and OS X, and it is using this nice library for sending the native notifications. If I would have enough free time I guess I can create pull request by myself to implement this, but I cannot promise anything, and I am not sure if this feature is wanted, but it would be definitely cool to have.

NPE in idle notification plugin

This error is being thrown to console from time to time, probably when I get auto logged from the game and I am doing some action that is throwing idle notification (woodcutting in this case):

[Thread-7] WARN net.runelite.client.task.Scheduler - error invoking scheduled task
java.lang.reflect.InvocationTargetException
        at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at net.runelite.client.task.Scheduler.run(Scheduler.java:100)
        at net.runelite.client.task.Scheduler.tick(Scheduler.java:88)
        at net.runelite.client.callback.Hooks.clientMainLoop(Hooks.java:89)
        at client.ax(client.java)
        at be.ab(be.java)
        at be.run(be.java)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
        at bj.getName(bj.java)
        at net.runelite.client.plugins.idlenotifier.IdleNotifierPlugin.checkIdle(IdleNotifierPlugin.java:200)
        ... 10 more

Slayer plugin throws a NullPointerException

I'm not 100% sure what the reason for this NPE is, but I think it was probably the result of getting slayer XP without having detected a task, since I hadn't yet done anything slayer-y while using runelite. The exception happened just as I finished the Varrock museum natural history quiz miniquest (which awards 1000 Slayer XP). I did have an active slayer assignment (0/88 moss giants).

Here's the stacktrace, along with some related logs before and after:

[Thread-7] DEBUG net.runelite.client.callback.Hooks - Chat message type SERVER: You have gained 1000xp in Slayer and Hunter.
[Thread-7] DEBUG net.runelite.client.plugins.examine.ExaminePlugin - Got examine without a pending examine?
[Thread-7] DEBUG net.runelite.client.config.ConfigManager - Setting configuration value for slayer.amount to -1
[pool-1-thread-1] DEBUG net.runelite.http.api.config.ConfigClient - Built URI: https://api.runelite.net/runelite-1.2.11-SNAPSHOT/config/slayer.amount
[Thread-7] DEBUG net.runelite.client.config.ConfigManager - Setting configuration value for slayer.taskName to 
[Thread-7] DEBUG net.runelite.client.config.ConfigManager - Setting configuration value for slayer.points to 0
[Thread-7] DEBUG net.runelite.client.config.ConfigManager - Setting configuration value for slayer.streak to 0
[Thread-7] WARN net.runelite.client.RuneliteModule - uncaught exception in event subscriber
java.lang.NullPointerException
	at net.runelite.client.plugins.slayer.SlayerPlugin.killedOne(SlayerPlugin.java:268)
	at net.runelite.client.plugins.slayer.SlayerPlugin.onExperienceChanged(SlayerPlugin.java:257)
	at sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)
	at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)
	at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)
	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
	at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)
	at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)
	at com.google.common.eventbus.EventBus.post(EventBus.java:217)
	at net.runelite.client.callback.Hooks.callHook(Hooks.java:136)
	at client.gs(client.java)
	at client.ev(client.java)
	at client.aq(client.java)
	at be.p(be.java)
	at be.run(be.java)
	at java.lang.Thread.run(Thread.java:748)
[Thread-7] DEBUG net.runelite.client.plugins.xpglobes.XpGlobesOverlay - Loading skill icon from /skill_icons/slayer.png
[Thread-7] DEBUG net.runelite.client.plugins.xpglobes.XpGlobesOverlay - Loading skill icon from /skill_icons/hunter.png
[pool-1-thread-1] DEBUG net.runelite.http.api.config.ConfigClient - Set configuration value 'slayer.amount' to '-1'
[pool-1-thread-1] DEBUG net.runelite.http.api.config.ConfigClient - Built URI: https://api.runelite.net/runelite-1.2.11-SNAPSHOT/config/slayer.taskName
[pool-1-thread-1] DEBUG net.runelite.http.api.config.ConfigClient - Set configuration value 'slayer.taskName' to ''
[pool-1-thread-1] DEBUG net.runelite.http.api.config.ConfigClient - Built URI: https://api.runelite.net/runelite-1.2.11-SNAPSHOT/config/slayer.points
[pool-1-thread-1] DEBUG net.runelite.http.api.config.ConfigClient - Set configuration value 'slayer.points' to '0'
[pool-1-thread-1] DEBUG net.runelite.http.api.config.ConfigClient - Built URI: https://api.runelite.net/runelite-1.2.11-SNAPSHOT/config/slayer.streak
[pool-1-thread-1] DEBUG net.runelite.http.api.config.ConfigClient - Set configuration value 'slayer.streak' to '0'

Add missing AoE Projectiles

A few that come to mind would be Vorkath, Vet'ion and Chaos fanatic.

Please feel free to comment more which are currently missing.

Slayer plugin - Throwing warnings to console for unknown icon

When icon for slayer task is not found, the enchanted gem icon is displayed, but the slayer plugin is throwing warnings to console because the icon is not found. This should be reduced to DEBUG as it is not really issue as there is always fallback image.

Opponent info health off by 1

When an opponent is damaged, the health will be 1 lower than it actually is. This results in the opponent info showing 0/maxhp when in reality the opponent is 1hp. I have tested this on cows, but I had noticed it before.

Missing timer for Antidote++

Timer in the timers plugin for the Antidote++ is missing, and that potion is really common to use (f.e. Shamans, KQ..).

Plugins - ability to fully disable plugins

Having ability to fully disable and unload plugins would be nice to have, to avoid having to add enable flag to each plugin configuration and to safely opt out from any unwanted plugins to increase performance (currently, each hook even for disabled plugins is called, so there are manual checks to skip calling of the logic if f.e. the enabled flag for plugin is false).

Can't run rs-client from Main

runescape-client/src/test/java/Main

Exception in thread "Thread-6" java.lang.IllegalMonitorStateException
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:502)
	at RSSocket.run(RSSocket.java:167)
	at java.lang.Thread.run(Thread.java:745)

[deobfuscator] NPE being thrown by PacketHandlerOrder

[main] INFO net.runelite.deob.deobfuscators.transformers.buffer.BufferFinder - Identified buffer ClassFile{name=class180}, packetBuffer ClassFile{name=class186}
[main] INFO net.runelite.deob.deobfuscators.PacketHandlerOrder - Found 0 packet handlers
[main] INFO net.runelite.deob.deobfuscators.packethandler.PacketTypeFinder - Found packet length: null
Exception in thread "main" java.lang.NullPointerException
	at net.runelite.deob.deobfuscators.PacketHandlerOrder.insertPacketLength(PacketHandlerOrder.java:624)
	at net.runelite.deob.deobfuscators.PacketHandlerOrder.run(PacketHandlerOrder.java:415)
	at net.runelite.deob.Deob.run(Deob.java:188)
	at net.runelite.deob.Deob.main(Deob.java:133)```

Bank value calculator

What it says, combined bank value and bank value per tab probably.

A special list of items referencing other ids to account for certain untradables #such as charged dfs.

Synchronize RuneLite icon

RuneLite icon should be updated to match icon from website (needs to be changed also in the updater) or website needs to be updated to use the RuneLite icon from client (but the website one looks nicer imo).

Add barrows plugin

Request by Forfiet in Discord:

  • Add brothers' names to tiles above mound
  • Add list of brothers in overlay; cross out or color when dead
  • Mark walls/doors on mini-map

Add possibility to not draw overlays over more widgets

Currently, there is option in overlays to only not draw over bank, click-to-play and login screen, but for example in ground items plugin, you don't want to draw over deposit box screen, miscellania overlay etc. Maybe change the 3 current booleans to list of widget IDs that overlay should not draw over and by default populate it with bank, click-to-play and some widget from login screen (if there is any). Then the API for showing overlay f.e over bank screen would look like this (if the list have getter named getHidingWidgets):

public MyOverlay()
{
  getHidingWidgets().remove(WidgetInfo.BANK_INVENTORY_ITEMS_CONTAINER);
}

and f.e to hide overlay when some widget is visible:

public MyOtherOverlay()
{
  getHidingWidgets().add(WidgetInfo.SOME_WIDGET);
}

GroundItems breaks after opening bank interface in certain areas

The most notable example is the Gnome Stronghold bank near Nieve. If you drop an item, open the bank, and close it, the overlay will no longer show up anywhere.

I've done some investigation and haven't found the cause yet. Widget.isHidden() seems to be working correctly - it may have something to do with the plane/region requests, but the overlay still works in Lumbridge Castle (2nd floor) bank, which makes me think it's not related to your level/floor on the map.

I'd appreciate if someone else could try looking into this as well.

Examine plugin - Out of bounds exception

Occurring randomly, or at least I do not found reason why is it happening. Probably just needs some array bounds check.

The exception is occurring for ids: 507, 508, 509, 510, 511, 487, 510, 511, 312, 276 (probably also few more). Here is example output:

[Thread-7] WARN net.runelite.client.RuneliteModule - uncaught exception in event subscriber
java.lang.ArrayIndexOutOfBoundsException: 507
        at net.runelite.client.plugins.examine.ExaminePlugin.findExamineItem(ExaminePlugin.java:266)
        at net.runelite.client.plugins.examine.ExaminePlugin.onChatMessage(ExaminePlugin.java:214)
        at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)
        at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)
        at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)
        at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
        at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)
        at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)
        at com.google.common.eventbus.EventBus.post(EventBus.java:217)
        at net.runelite.client.callback.Hooks.addChatMessage(Hooks.java:240)
        at ag.e(ag.java)
        at p.w(p.java)
        at client.gs(client.java)
        at client.ev(client.java)
        at client.aq(client.java)
        at be.p(be.java)
        at be.run(be.java)
        at java.lang.Thread.run(Thread.java:745)

Possibly broken idle notification timeout

Currently, the idle notification is immediately thrown when I stop woodcutting. Based on the defualt configuration it is supposed to be thrown 5 seconds after last action, but it is thrown even when I start chopping the tree and stop before 5 seconds pass.
It looks like it is working correctly in the Motherlode Mine (at least based on @utsukami testing).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.