Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Advanced instanced dungeon plugin for Paper 1.21+. In-game GUI editor, party system, and randomized gacha loot.
🚀 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.
Information
| Published on | June 11, 2026 |
|---|---|
| Downloads | 17 |
Platforms
Paper (1.21-26.1.2)
Dependencies
Paper