Modern Jobs - Folia Support v1.0.8

A next-generation jobs experience built for modern Minecraft servers.
New Features
- Level-based XP & Earnings scaling — xp.level-bonus-per-level and earnings.level-bonus-per-level in config.yml give players a growing multiplier as they level up
- New PAPI placeholders — %ojobs_booster_xp_<jobid>% and %ojobs_booster_earnings_<jobid>%, plus %booster_xp%/%booster_earnings% in job item lore
- Custom items in job-menu — job-menu.custom-items in gui.yml now works with job-specific placeholders (%level%, %prestige%, etc.)
- Unified custom items engine — centralised into GuiHelper; adds [message], [player], [console], [close] action prefixes and close-on-click everywhere
- Fully translatable earnings list — action verbs (Mine/Craft/Smelt/…) and the header now come from lang files; all 4 built-in files updated with DE/FR/ES translations

Bug Fixes
- gui.yml YAML fix — click-sound and prev-page-slot were on the same line, breaking the prev-page slot
- %ojobs_job% placeholder now returns the lang-configured "no job" string instead of hardcoded "None"
New Features: - Full perk system (20+ perks across all jobs) + 3 new Perk GUIs
- BossBar XP notifications with earnings placeholders - Earnings multiplier on boosters (separate from XP multiplier) - Job-change cooldown to prevent join/leave spam
- Inline leaderboard inside the main menu
Bug Fixes
- The gui.yml malformed YAML (click-sound + prev-page-slot on same line)
- Night Vision flicker fix for permanent passive effects
- Prestige XP bonus stacking fix
- BossBar cleanup on player disconnect
Data Integrity & Save Fixes
- Fixed YamlStorage saving player files non-atomically — saves now write to a .tmp file first then atomically replace the real file, preventing corrupt YAML on server crash or power loss
- Fixed ConfigManager re-parsing config.yml from disk unnecessarily during language file loading — it now reuses the already-loaded config object
- Fixed MySQLStorage missing DEFAULT '' on the player_name column in the auto-migration ALTER TABLE statement, which caused migration failures on strict SQL servers
---
XP Exploits & Farming
- Fixed a farming exploit where breaking a single bamboo, sugar cane, or cactus block directly on the ground (without another block of the same type below it) would grant XP as if it were a full grown plant
- Fixed a smelting exploit where extracting a large batch of items from a furnace in one event (after leaving items to accumulate) would grant XP proportional to the entire stack. XP scaling is now capped at a configurable maximum (default: 8 items per extract, set via settings.smelting-max-xp-items in
config.yml)
- Fixed shift-click crafting granting XP for only 1 item crafted when the actual crafted amount was much higher
GUI Fixes
- Fixed JobDetailGui opening the Rewards GUI always at prestige 0 regardless of the player's actual prestige level
- Fixed JobsMainGui re-opening the main menu even when leaveJob() failed (e.g. data not loaded), which caused a blank/broken menu state
- Fixed RewardsGui using fragile Java reflection to cancel inventory click events — replaced with a direct instanceof check, matching every other GUI in the plugin
- Fixed all GUI open methods using Bukkit.getScheduler() in the AdminGui reload action on Folia-based servers
Memory Leaks
- Fixed placedBlocks set in BlockListener growing forever — blocks destroyed by explosions or fire are now properly removed from the set
- Fixed trackedPassiveEffects and stoneSenseCooldowns in PerkListener not being cleaned up when a player disconnects, causing a permanent memory leak per logout
- Fixed getOfflinePlayer() calls in LeaderboardGui triggering blocking disk I/O on the main thread for players not cached locally — replaced with createPlayerProfile(UUID, name)
Perk Fixes
- Fixed the Scaffold perk reading and modifying the player's held item from an async/region thread — the item type is now captured on the main thread and the inventory update is scheduled back to the player's thread
- Fixed the Netherite Upgrade perk not cancelling the smithing table event after a successful upgrade, allowing the item to also be consumed by the vanilla recipe handler
Command Fixes
- Fixed /jobs giveexp and /jobs setlevel not validating that the target player had actually joined the specified job before applying changes
- Fixed tab-completion for /jobs stats inserting an empty string "" into the suggestions list when the sender was the console
Code Quality
- Fixed PlaceholderAPI availability check being evaluated at class-load time (before plugins finished enabling) — it is now checked lazily at the point of use
- Fixed MongoDBStorage leaderboard queries crashing entirely if any single stored UUID was malformed — bad entries are now skipped individually with a warning
- Fixed PrestigeManager.canPrestige() calling Optional.get() without an isPresent() guard, risking a NoSuchElementException
- Fixed PrestigeManager.canPrestige() not guarding against maxLevel <= 0, which would allow infinite prestige on jobs with no level cap configured
  • Fixed MySQL and SQLite player saves so removed or reset jobs are properly deleted from storage instead of lingering in the database.
  • Fixed MySQL and SQLite loading for disabled perks, so toggled perks now persist correctly after reconnects and restarts.
  • Fixed passive perk updates so they no longer depend on player movement. Permanent effects now refresh reliably in the background.
  • Fixed the Miner night vision passive refresh to prevent the flicker/dark flash effect.
  • Improved Hunter tracking and Mob Sense refresh handling for more consistent perk behavior.
  • Reworked Vein Miner and Treefeller to break blocks in batches instead of all at once, reducing lag spikes and improving threaded/Folia safety.
  • Fixed leaderboard cache refresh so data updates immediately on startup and stale cached entries are cleared before rebuilding.
  • Fixed player data loading to keep the correct player name during startup/join instead of falling back to Unknown in some cases.
  • Fixed reward parsing for job reward sections that only grant perks.
  • Improved action listener handling so only the player's actual loaded jobs are processed, which also avoids issues with disabled or missing jobs.
  • Added Spigot API build support cleanup in the Maven setup.
Buy a license now
$15.00
EULA
Standard EULA
Use on any projects you own with attribution
Support
Standard
Includes:
Download the resource
Access new updates
Support from the creator
Support duration
1 year
Share and earn
Refer this resource and earn a 10% commission.
909 Views
5 Purchases
6 Downloads
Apr 25, 2026 Published
Jul 7, 2026 Updated
Not yet rated
1.6 MB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. No
Type
  1. Gameplay
  1. GUI
Game mode
  1. Survival
  1. Factions
  1. Towny
Supported software
  1. Spigot
  1. Paper
  1. Purpur
Supported versions
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
Supported languages
  1. English
  1. Spanish
  1. Russian
  1. German
  1. French
  1. Portugese
  1. Polish
  1. Turkish
  1. Chinese
  1. Indonesian
  1. Italian
  1. Vietnamese
  1. Dutch
  1. Korean
  1. Czech
  1. Thai
  1. Hungarian
  1. Arabic
  1. Japanese
  1. Ukrainian
  1. Swedish
  1. Danish
  1. Romanian
  1. Slovak
  1. Hebrew
  1. Lithuanian
Creator
Owner
Recommended for you
The Ultimate NPC Plugin for MythicMobs & ModelEngine
5.00 star(s) 1 ratings
26 purchases
Bring the Ultimate holiday spirit to your Minecraft server with the Ultimate Christmas Plugin!
Not yet rated
7 purchases
The Ultimate Plugin for Your Minecraft Economy Needs!
Not yet rated
1 purchase
Plugin that will create a void world in your server just by running 1 command /afevoid
Not yet rated
2 purchases
Not yet rated
1 purchase
Share and earn
Refer this resource and earn a 10% commission.
909 Views
5 Purchases
6 Downloads
Apr 25, 2026 Published
Jul 7, 2026 Updated
Not yet rated
1.6 MB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. No
Type
  1. Gameplay
  1. GUI
Game mode
  1. Survival
  1. Factions
  1. Towny
Supported software
  1. Spigot
  1. Paper
  1. Purpur
Supported versions
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
Supported languages
  1. English
  1. Spanish
  1. Russian
  1. German
  1. French
  1. Portugese
  1. Polish
  1. Turkish
  1. Chinese
  1. Indonesian
  1. Italian
  1. Vietnamese
  1. Dutch
  1. Korean
  1. Czech
  1. Thai
  1. Hungarian
  1. Arabic
  1. Japanese
  1. Ukrainian
  1. Swedish
  1. Danish
  1. Romanian
  1. Slovak
  1. Hebrew
  1. Lithuanian
Creator
Owner
Recommended for you
The Ultimate NPC Plugin for MythicMobs & ModelEngine
5.00 star(s) 1 ratings
26 purchases
Bring the Ultimate holiday spirit to your Minecraft server with the Ultimate Christmas Plugin!
Not yet rated
7 purchases
The Ultimate Plugin for Your Minecraft Economy Needs!
Not yet rated
1 purchase
Plugin that will create a void world in your server just by running 1 command /afevoid
Not yet rated
2 purchases
Not yet rated
1 purchase
Top