EndgameAndQoL4.0.4.jar
What's new
[4.0.4]
New Features
- Instance portal key refund — If a dungeon instance fails to load, the consumed portal key is automatically returned to the player after a few seconds
Bug Fixes
- Vorthak shop "restocks in 739,676 days" fix — Shop restock timer used
Instant.now()(real year 2026) instead of game time. Engine calculates days from year 1 CE, causing an impossibly long timer. Now usesWorldTimeResource.ZERO_YEARso the engine recalculates correctly. Also fixed for Korvyn and Morghul shops - BestiaryData.json corruption fix — Concurrent
save()calls from debounced saves and player disconnects could interleave file writes, producing invalid JSON. All save operations now synchronized - Craft bounty detection fix — Craft-type bounties (e.g., "Craft a Mithril Sword") were not detecting completed crafts.
CraftTrackerwas using the recipe ID instead of the output item ID, and filtering out non-Endgame_prefixed items - Crafting toggle persistence fix — Recipe toggles were resetting on restart. Two systems were fighting: toggles saved to
EndgameConfig.jsonwhile recipe blocking reads fromRecipeOverrides.json. Removed duplicate toggle section, unified all recipe visibility onRecipeOverrides.jsonas the single source of truth - RPG Leveling XP broadcast fix — Killing an elite/boss mob awarded XP to ALL players in the same world instead of only the killer. Now uses the death damage source to identify and reward only the actual killer
- Dragon Fire spawn fix — Dragon Fire spawn caused
IllegalStateException: "Kind" must not be an empty string.
Balance
- Morghul Swamp Ingot stock increased — Stock raised from 10 to 99 per restock
- Dragon Heart stack size — Max stack increased from 1 to 100
Technical
- SQL drivers unbundled — MySQL, PostgreSQL, and MariaDB JDBC drivers are no longer included in the JAR. Server admins using these databases must place the driver JAR in the server classpath manually. SQLite remains bundled
- BountyData.json corruption fix — Concurrent save calls in BountyManager could interleave file writes. All save operations now synchronized (matching AchievementData/BestiaryData fix)
- Config serialization safety — CODEC getters for all player data files (Achievements, Bestiary, Bounties, VoidPockets, Accessories) now return snapshots instead of live mutable map references, preventing concurrent modification during serialization
See 4.0.0 file for the major changelog
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects