5ef3597486e8078798ae2a545572a0a4b65b1a28
The effects of the Tele Block spell expire on three possible conditions: 1. When a player leaves the wilderness on a non-PVP/DMM world 2. When a player enters a PVP/DMM world safe zone 3. When a player logs out Leaving the wilderness can be detected via Varbits changes, entering safe zones in PVP/DMM worlds can be detected via WidgetHiddenChanged events, and logging out is already detected via GameStateChanged events. With that said, addressing the first two cases is not a trvial effort as there are certain race conditions that must be handled. The WidgetHiddenChanged event triggers upon login to PVP worlds regardless of where you log in, and the PVP widgets all initially load in a state which would be reflective of being in a safe zone, and are later set to the proper state before the first display frame is rendered. Similarly, during world hops, GameStateChanged and VarbitChanged events trigger in a pattern which causes the client to think that a player is always outside the wilderness upon reaching a `LOGGED_IN` game state; that is, the following events occur on world hopping: 1. Game state changes to `HOPPING` 2. Varbits are all reset to default values. In the case of the wilderness varbit, it is set to 0--the value representing being outside the wilderness. 3. Game state changes to `LOGGED_IN` 4. Varbits are set based on player information. Only at this point is the IN_WILDERNESS varbit set to its proper value. To handle these race conditions, the event subscribers for game state change and widget hidden events only set a flag which is checked once per game tick to handle PVP safe zone (and wilderness varbit) checks. Fixes runelite/runelite#2384
runelite

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
- http-api - API for api.runelite.net
- http-service - Service for api.runelite.net
- model-viewer - RS Model, NPC/Object, and terrain viewer
- runelite-api - RuneLite API, interfaces for accessing the client
- runelite-mixins - Mixins which are injected into the injected client's classes
- runescape-api - Mappings correspond to these interfaces, runelite-api is a subset of this
- 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.
Description
Languages
Java
98.9%
GLSL
0.7%
C
0.3%
