Skip to content

Add title popups, action bar notifications, and sound effects for skill level-ups - #131

Draft
dmccoystephenson with Copilot wants to merge 21 commits into
developfrom
copilot/improve-skill-level-notifications
Draft

Add title popups, action bar notifications, and sound effects for skill level-ups#131
dmccoystephenson with Copilot wants to merge 21 commits into
developfrom
copilot/improve-skill-level-notifications

Conversation

Copilot AI commented Jan 2, 2026

Copy link
Copy Markdown
Contributor

Level-up events were easily missed in chat. Players requested prominent on-screen notifications and helpful command reminders.

Changes

Visual Notifications

  • Title popups: Center-screen "LEVEL UP!" / "NEW SKILL!" with skill name and level (3.5s display)
  • Action bar: Non-intrusive "+1 XP" above hotbar on experience gains
  • Uses Player.sendTitle() and Player.sendActionBar() APIs (Spigot 1.18.1+)

Audio Feedback

  • ENTITY_PLAYER_LEVELUP sound on level-ups and new skills

Configuration (config.yml)

titleNotifications: true        # Title popups
actionBarNotifications: true    # Action bar XP messages
soundNotifications: true        # Level-up sounds

Messages (message.yml)

LevelUpTitle: "&6&lLevel Up!"
LevelUpSubtitle: "&a%skill% &7- &bLevel %level%"
LevelUpTip: "&7Type &e/ss help &7for more info"
ExperienceGain: "&a+1 %skill% XP"

Implementation (PlayerRecord.java)

Level-up notification:

private void levelUp(int ID, int experienceRequiredForLevelUp) {
    // ... existing level-up logic ...
    
    if (configService.getConfig().getBoolean("titleNotifications", true)) {
        String title = messageService.getlang().getString("LevelUpTitle");
        String subtitle = messageService.getlang().getString("LevelUpSubtitle");
        if (title != null && subtitle != null && skill.getName() != null) {
            player.sendTitle(
                messageService.convert(title),
                messageService.convert(subtitle
                    .replaceAll("%skill%", skill.getName())
                    .replaceAll("%level%", String.valueOf(getSkillLevel(ID, true)))),
                10, 70, 20
            );
        }
    }
    
    if (configService.getConfig().getBoolean("soundNotifications", true)) {
        player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1.0f, 1.0f);
    }
}

Experience gain notification:

public void incrementExperience(int ID) {
    // ... existing XP logic ...
    
    if (configService.getConfig().getBoolean("actionBarNotifications", true)) {
        String expMessage = messageService.getlang().getString("ExperienceGain");
        if (expMessage != null && skill.getName() != null) {
            player.sendActionBar(messageService.convert(
                expMessage.replaceAll("%skill%", skill.getName())
            ));
        }
    }
}

Safety

  • Null checks on all message strings and skill names
  • Config fallback values (default: enabled)
  • Respects existing levelUpAlert master toggle
  • Each notification type independently toggleable

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • hub.spigotmc.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SimpleSkills/SimpleSkills org.codehaus.plexus.classworlds.launcher.Launcher clean compile (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SimpleSkills/SimpleSkills org.codehaus.plexus.classworlds.launcher.Launcher -f pom.xml -B -V -e -Dfindbugs.skip -Dcheckstyle.skip -Dpmd.skip=true -Dspotbugs.skip -Denforcer.skip -Dmaven.javadoc.skip (dns block)
  • jitpack.io
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SimpleSkills/SimpleSkills org.codehaus.plexus.classworlds.launcher.Launcher clean compile (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SimpleSkills/SimpleSkills org.codehaus.plexus.classworlds.launcher.Launcher -f pom.xml -B -V -e -Dfindbugs.skip -Dcheckstyle.skip -Dpmd.skip=true -Dspotbugs.skip -Denforcer.skip -Dmaven.javadoc.skip (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>Better notifications when reaching levels</issue_title>
<issue_description>Not sure how you feel about pop ups on screen, but consider maybe making it more obvious to the player (and others) when levels are reached in skills. The way I envision it (which can be tweaked in a multitude of ways:

  1. Pop up shows you that you have learned a new skill and provides a "/ss help " to tell the player how to level up said skill and maybe what that skill provides the player
  2. Fireworks shower the player upon leveling up a skill to go with the chat message that tells the player they have leveled up a skill
  3. A global chat message when a player reaches a level milestone for a specific skill (Every 5 or 10 levels).

Again this can be changed in whatever ways you think would make the plugin more enjoyable and not annoying to the player</issue_description>

Comments on the Issue (you are @copilot in this section)


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 4 commits September 21, 2025 16:06
Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
Copilot AI and others added 5 commits January 2, 2026 03:19
Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
Copilot AI changed the title [WIP] Improve notifications for reaching skill levels Add title popups, action bar notifications, and sound effects for skill level-ups Jan 2, 2026
Copilot AI requested a review from dmccoystephenson January 2, 2026 03:27
dmccoystephenson and others added 12 commits January 5, 2026 19:40
…e() usage, and handle() active guard

Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
…thub.com:Dans-Plugins/SimpleSkills into copilot/fix-751a9037-3a32-417b-8065-948a85ffe2bd
… totals

Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
…17b-8065-948a85ffe2bd

Fix skill activation/deactivation persistence across server restarts
Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Dans-Plugins/SimpleSkills/sessions/30bcb888-b3bd-40e1-896a-97e301aa5966
…g paths, Ponder install step, standardize repo links

Co-authored-by: dmccoystephenson <21204351+dmccoystephenson@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Dans-Plugins/SimpleSkills/sessions/fbdfd48c-b863-4ded-bc3e-9825f2fc9cca
…-medieval-factions

Align documentation with Medieval Factions plugin conventions
# Conflicts:
#	src/main/resources/config.yml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants