Tags
Creators
Details
Licensed ARR
Published 7 months ago
Updated 4 months ago
All versions
1.6.3
Release
SinceDungeon 1.6.34 months ago 298
Uploaded by
Compatibility
Minecraft: Java Edition
26.1.x
1.21.x
Platform
Paper
Changes
๐ SinceDungeon - Changelog v1.6.3 (Official Release)
Comprehensive compilation of feature additions, system overhauls, and critical performance optimizations for version 1.6.3.
โก JIT & Memory Performance Optimizations
๐งฉ JIT Loop-Churn Eradication & RAM Leak Fixes
- JIT Loop-Churn Eradication: Optimized heavy particle generation algorithms within
ControlZoneAction,ReachLocationAction, andSmartBreakWallAction. Removed inlineLocationandVectorinstantiations insidewhile/forloops, replacing them with reusable mutable pointers. This completely prevents massive Garbage Collection (GC) spikes during intense boss fights. - MathCache Utility: Added a pre-calculated trigonometry cache (
MathCache.java) to eliminate CPU overhead during intensive circular particle generation. Replaced allMath.sin()andMath.cos()calls inside rapid 360-degree hot-loops with the newMathCachearray, heavily stabilizing server TPS. - Orphaned World RAM Leak Fix: Implemented a robust recursive retry mechanism in
WorldManagerandDefaultInstanceProvider. If a Dungeon World fails to unload due to lingering chunk tickets or entities, the system forcefully purges all entities and retries the unload every 5 seconds until successful, completely freeing trapped JVM RAM. - Comprehensive Cache & Memory Cleanup:
- Fixed an offline memory leak in
DungeonGame.javawhere player states persisted endlessly if they disconnected during dungeon runs (savedStatescache). - Fixed a PlaceholderAPI task leak by tracking active asynchronous caching tasks statically, preventing CPU/RAM leaks on
/papi reload. - Fixed Ghost Task leaks by accurately tracking the Kick Countdown
BukkitTask. Tasks are now safely aborted on forceful shutdowns, preventingPlayerobject memory leaks. - Added a
cleanup()lifecycle hook toLivesManagerto safely terminate asynchronous database sync tasks on server shutdown/reload. - Overhauled
cleanup()methods across multiple Core and Premium Actions (DefendCore,Escort,LootChest, etc.) to explicitly clearSetandMapcollections holding dead entity references.
- Fixed an offline memory leak in
๐งต Threading & Main Thread Offloading
- Eliminated TPS Death Loop: Removed completely unused, ultra-high-frequency event pass-throughs (
PlayerMoveEvent,ProjectileLaunchEvent, etc.) fromDungeonListener. This permanently resolves CPU starvation when 10+ players are actively running dungeons. - I/O Event Caching: Drastically improved
DungeonListenerperformance. High-frequency events no longer query the YAML config for the world-prefix every tick; it is now cached in memory and safely updated viaupdateConfig(). - UI Parsing Efficiency: The Action Bar ticking system in
DungeonGamenow compiles theMiniMessagecomponent once per tick instead of parsing it repeatedly for every individual player in the map. - Exception Safety Hardening: Wrapped the
stop()logic inDungeonGamewith atry-catch-finallyblock to guarantee thataggressivelyCleanupMemory()and world unloading trigger absolutely, even if aNullPointerExceptionoccurs mid-flight. - Startup Freeze Fix: Moved database, cooldown, lives, and template loading to a safe asynchronous startup flow. Added startup readiness checks before letting players join dungeons, preventing server lockups during plugin enabling.
๐ Native Folia Support
- Entity Thread Concurrency: Implemented Folia-compliant Entity Thread concurrency via
SchedulerCompat.runAtEntity(...). - Folia
IllegalStateExceptionFix: Resolved thread state issues on Folia servers by forcing player state restoration (Health, Inventory, Velocity) onto the respectiveEntityScheduler. - FoliaDungeonValidator: Added a dedicated validator to block Core world-copy/template-world dungeons on Folia unless the active provider is shared-world compatible (Premium schematic mode). Validation triggers on template load, dungeon join, and editor saves.
- Hologram Modernization: Upgraded Premium hologram updates to use native
TextDisplayentities, completely removing outdatedDecentHologramsrequirements and hardening region-based rendering on Folia. - โ ๏ธ Configuration Warning: This version does NOT support running
Folia+Schematic Modesimultaneously.
โจ New Features & General Enhancements
๐ฆ Universal Custom Model Data (CMD) Support
- Universal CMD Integration: All items across the Dungeon GUI, Reward Chests, Loot Pools, Leaderboards, and Dynamic Custom Items now natively support Custom Model Data via the
MATERIAL:AMOUNT:CMDconfiguration format (e.g.,DIAMOND_SWORD:1:123). - Smart Material Parsing: You can now write
PAPER:10606directly. The plugin smartly realizes that since 10,606 is greater than a max stack size of 64, you mean Custom Model Data, and it will spawn 1 Paper with CMD 10606. - Component List Protection: Simplified the default config for
items.ymltocustom-model-data: 1001(as a flat integer), ensuring the auto-updater will no longer corrupt component lists. - Tip: Add
auto-update: falseto the top of configuration files if you want to prevent the system from auto-updating that specific file.
๐ก๏ธ Dungeon Management & Core Enhancements
- Multi-Phase Boss Tracking: Added the
target_to_killparameter to theMYTHIC_WAVEaction. This allows flawless support for multi-phase MythicMobs bosses. The dungeon objective accurately tracks the transition from an initial NPC/ArmorStand into a live boss without auto-completing prematurely. - Console Spam Protection: Structural tasks (like
SmartBreakWallActionand general Tickables) will now forcefully cancel and log properly if a map configuration throws continuous structural errors, preventing infinite loop console spam. - Access Control & Privacy Overhaul:
- Regular members can no longer view or tab-complete
public: falseprivate dungeons. Server administrators retain full tab-completion and visibility for testing purposes. - Added an administrative bypass rule: Operators can execute
/dungeon join <map> <target>to forcefully move target players into private maps, bypassing the standard privacy layer.
- Regular members can no longer view or tab-complete
- Advanced Multiverse-Inventories Compatibility: Split
MultiverseInventoriesHookinto separate V4 and V5 implementations with safe reflection loading to preventNoClassDefFoundErroron legacy servers. Removed old legacy permissions and implemented dynamic permission attachments (mvinv.bypass.*) to cleanly prevent MVI from wiping player inventories during dungeon teleports. - Concurrency Safety: Replaced shared
ArrayListusages insideDungeonGamewithCopyOnWriteArrayListto permanently resolveConcurrentModificationExceptionunder heavy load.
๐ Leaderboards & PlaceholderAPI (PAPI)
- Asynchronous Caching Layer: Introduced a thread-safe memory cache for PAPI queries. Data automatically refreshes via async tasks every 5 minutes, completely eliminating database locks and main-thread lag spikes caused by scoreboard ticks.
- Smart Map ID Parsing: Map placeholders automatically identify map string logic, natively allowing underscores (
_) inside map ID config names without breaking rank tracking parsing. - New Admin Commands:
- Target Reset Command:
/sincedungeon top resetplayer <player> [map]allows admins to delete a specific player's metrics directly from the database without wiping the entire map's history. - Incognito Bypass Node: Added
SinceDungeon.top.ignore. Players/admins with this permission bypass leaderboard insertions entirely, preventing staff accounts from crowding the tops.
- Target Reset Command:
๐ฎ Gameplay Mechanics & Commands
- Dungeon Consumable Restrictions: Server owners can now strictly prevent players from consuming utility items (Soul Crystals, Cooldown Reset Tickets, Time Skip Tickets) while actively fighting inside an active dungeon instance via
allow-use-in-dungeon: falseinsidesettings/items.yml. - Comprehensive Lives Command Extension: Added full command structures for managing lives with support for the
-s(Silent) flag to suppress feedback messages:/sincedungeon lives <target> add/reduce/set <amount> [-s]/sincedungeon lives <target> addmax <amount> [-s]/sincedungeon lives <target> setregenamount <amount> [-s]/sincedungeon lives <target> setregeninterval <seconds> [-s]/sincedungeon lives <target> resetregen/check [-s]/sincedungeon givelifeitem <target> <amount> [-s]
- Granular Life Deductions: Added precise life deduction hooks across files:
lives-deducted-on-leave: 0,lives-deducted-on-fail: 0, andlives-deducted-on-clear: 0. - Combat Area Sealing: Added logic to automatically seal off the combat area during a boss fight to prevent defeated players from rejoining and disrupting the phase mechanics.
- Gravity Block Fix: Fixed an issue where gravity-affected blocks (like Sand and Gravel) would fail to fall within instanced dungeon worlds.
๐ ๏ธ Developer API
SinceDungeonAPI.javaOverload: Introduced a new API method overload:joinDungeon(Player player, String id, boolean allowPrivate). This allows third-party hooks and external plugins to safely force-join or programmatically transition players into private dungeons under explicit backend validation.- Bundled JDBC Drivers: Shipped bundled SQLite and MySQL JDBC drivers natively within the project jar for highly reliable, out-of-the-box database initialization.
- Documentation Migration: Moved the official wiki/documentation repository onto GitHub Pages under the
docs/directory, integrated with an automated deployment workflow.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:uxQcMYwk:ztlpNw05"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:uxQcMYwk:ztlpNw05"
}

