Skill Level Alert

BeginnerDisplay

Sends a chat message when you level up a skill. Demonstrates StatChanged event handling.

10 min read

What It Does

Sends a chat message when you level up a skill. Demonstrates StatChanged event handling.

Source Code

java
1package com.example;
2
3import net.runelite.api.Client;
4import net.runelite.api.Skill;
5import net.runelite.api.events.StatChanged;
6import net.runelite.client.eventbus.Subscribe;
7import net.runelite.client.plugins.Plugin;
8import net.runelite.client.plugins.PluginDescriptor;
9import javax.inject.Inject;
10import java.util.HashMap;
11import java.util.Map;
12
13@PluginDescriptor(
14    name = "Level Alert",
15    description = "Alerts on level up"
16)
17public class LevelAlertPlugin extends Plugin {
18    @Inject
19    private Client client;
20
21    // Track last level for each skill separately
22    private Map<Skill, Integer> lastLevels = new HashMap<>();
23
24    @Subscribe
25    public void onStatChanged(StatChanged event) {
26        Skill skill = event.getSkill();
27        int newLevel = event.getLevel();
28        int lastLevel = lastLevels.getOrDefault(skill, 1);
29
30        if (newLevel > lastLevel) {
31            client.addChatMessage(
32                net.runelite.api.ChatMessageType.GAMEMESSAGE,
33                "",
34                "Congratulations! You reached level " + newLevel + " in " + skill.getName() + "!",
35                null
36            );
37            lastLevels.put(skill, newLevel);
38        }
39    }
40}

Code Annotations

Line 18

Track last known level

Line 22

Listen for skill changes

Line 25

Check if level increased

Line 26

Send congratulation message

API Classes Used

Key Concepts

  • Track last known level
  • Listen for skill changes
  • Check if level increased
  • Send congratulation message

Next Steps

  • Learn about StatChanged events
  • Add configurable skill filtering
  • Add sound alerts