File Details
Orbis_and_Dungeons-2026.2.22-64709.jar
- R
- Feb 22, 2026
- 135.32 KB
- 3.6K
- Early Access
File Name
Orbis_and_Dungeons-2026.2.22-64709.jar
Supported Versions
- Early Access
Version 2026.2.22 - Class Lookup Persistence Fix
🐛 Bug Fixes
Fixed: getPlayerClass() Returning "none" for Valid Players
Problem:
RaceManager.getPlayerClass(player) was returning "none" even when the player had a class correctly set.
Root Cause:
The method only consulted RaceStorage (the in-memory/file cache). If the server restarted and the cache was not yet populated (e.g., the player hadn't triggered any class-setting action since the restart), the method returned "none" — even though the class was correctly persisted in the RaceData component.
Compare with getPlayerRace(), which has a full fallback chain:
RaceDatacomponent viaPlayerRef.getHolder()- In-memory
LAST_KNOWN_RACEcache RaceStoragefile cache
getPlayerClass() previously only performed step 3.
Fix applied in RaceManager.getPlayerClass():
// Before (only checked RaceStorage):
String classId = RaceStorage.getPlayerClass(player.getUuid());
// After (mirrors getPlayerRace's fallback logic):
// 1. Check RaceStorage first
// 2. If not found, fallback to RaceData component via PlayerRef.getHolder()
// 3. When found in component, sync to RaceStorage for faster future lookups
When the class is recovered from the component, RaceStorage is automatically updated so subsequent calls resolve from cache.
📝 Files Modified
RaceManager.java— Added component fallback togetPlayerClass()
🚀 For Server Admins
No breaking changes. This is a transparent fix — no config wipes or command changes required.
If players were seeing "none" as their class after a server restart, this update resolves the issue automatically on the next call to getPlayerClass().