Code (YAML):
# SagaDungeons Changelog
Version 1.2.0.91
(2025-06-05
)
Performance Optimizations
Optimized the asynchronous processing mechanism for dungeon world creation.
Moved the world creation operation
(WorldCreator.createWorld
(
)
) from the main thread to an asynchronous thread.
Implemented a complete asynchronous process
: File Copying → World Creation → Returning to the main thread to set world properties.
Significantly reduced main thread blocking time, with a noticeable performance boost, especially on Bukkit/Spigot servers.
Maintained thread safety by ensuring world property settings are still performed on the main thread.
Code Optimizations
Refactored the execution flow of the WorldManager.createDungeonWorld
(
) method.
Ensured that world creation is handled in a single, asynchronous location within the project.
Improved the exception handling mechanism, adding dedicated error handling logic for world creation.
Retained the creation lock mechanism to prevent server overload from concurrent dungeon creations.
## Version 1.2.0.71 (2025-06-05)
### New Features
- Implemented GUI multi-language system
- Created GUILanguageManager class, dedicated to managing multi-language support for GUI interfaces
- Added lang_gui.yml
(Chinese
) and lang_gui_en.yml
(English
) configuration files
- Modified AbstractGUI base class, adding multi-language support methods and helper tools
- Successfully refactored 9 main GUI classes to support automatic loading of corresponding language files based on the lang configuration in config.yml
- Includes 200+ GUI text configurations, covering
all interface elements
### Feature Improvements
- Optimized GUI text management system
-
All hardcoded Chinese messages in GUI now read from configuration files
- Supports dynamic placeholder replacement, e.g., template name, player name, etc.
- Implemented language file fallback mechanism to ensure system stability
- Added convenient helper methods to simplify multi-language implementation in GUI classes
## Version 1.2.0.66 (2025-06-05)
### Bug Fixes
- Fixed issue where GUI editing function was not synchronized with template configuration files
- Resolved issue where configuration file was not updated after modifying creation condition toggles in GUI
- Added template reload mechanism after
all GUI save operations to ensure memory and configuration file synchronization
- Fixed issue where old configurations were still used when creating dungeons; now uses the latest configuration file content
- Involved modifications to 13 files
: 9 GUI classes and 4 command classes
### Technical Improvements
- Added `reloadTemplate
(
)` after
all `saveTemplate
(
)` calls to ensure data consistency
- Optimized real-time synchronization mechanism for template configurations, improving reliability of configuration changes
- Followed the principle of unified methods, applying the same reload logic in
all relevant locations
## Version 1.2.0.30 (2025-06-05)
### New Features
- Implemented player offline reconnection dungeon state recovery system
- Resolved state inconsistency issues when players reconnected after being offline inside a dungeon
- Added `handlePlayerReconnection
(
)` method to handle dungeon state checks upon player reconnection
- Implemented intelligent state recovery mechanism
: automatically detects if a player is in a dungeon world and restores the corresponding state
- Added orphaned player handling
: automatically teleports players to a safe location if they are in an invalidated dungeon world
### Feature Improvements
- Enhanced `PlayerListener.onPlayerJoin
(
)` event handling
- Delayed player state check by 1 tick to ensure player is fully loaded before state check
- Added handling logic for various reconnection scenarios
: state recovery, permission verification, orphan cleanup
- Expanded `DungeonManager` class functionality
- Added `findDungeonByWorldName
(
)` method to find corresponding dungeon instance by world name
- Changed `setPlayerGameMode
(
)` method to public, supporting game mode setting during state recovery
- Improved dungeon security system
- Automatically verifies player permissions on reconnection; players without permission will be safely removed
- Supports various permission verifications
: public dungeons, private dungeons, creators, etc.
### Message System Updates
- Added reconnection-related message configurations in `messages.yml`
- `dungeon.reconnect.restored`
: Player state successfully restored message
- `dungeon.reconnect.rejoined`
: Player rejoined dungeon message
- `dungeon.reconnect.orphaned`
: Player removed from invalidated dungeon message
### Bug Fixes
- Fixed state inconsistency issue when players reconnected after being offline inside a dungeon
- Fixed incorrect player game mode after reconnection
- Fixed issue where players lacked valid dungeon entry permissions after reconnection
- Fixed issue where orphaned players could remain in deleted dungeon worlds
## Version 1.2.0.13 (2025-06-04)
### New Features
- Implemented custom kickback location feature
- Added `/sd admin setback` command for administrators to set illegal player kickback locations
- Created SetBackCommand class to handle kickback location settings
- Enhanced DungeonSecurityManager to prioritize custom kickback locations, including safe location checks
- Added `security.custom-kickback-location` configuration item in config.yml
## Version 1.1.0.99 (2025-06-04)
### New Features
- Implemented dungeon safe entry control system
- Added command blacklist feature to prevent players from using illegal teleport commands in dungeons
- Implemented legitimate identity detection mechanism, only allowing entry into dungeons through project-legitimate methods
- Created DungeonSecurityManager class to uniformly manage dungeon security functions
## Version 1.1.0.98 (2025-06-04)
### New Features
- Completed GUI management system development
- Implemented EditCommand and TemplateEditMainGUI main interface
- Completed basic information editing GUI
(TemplateBasicEditGUI
)
- Completed creation conditions editing GUI
(TemplateConditionsEditGUI
)
- Completed reward system editing GUI
(TemplateRewardsEditGUI
)
- Completed completion conditions and spawner editing GUI
(TemplateCompletionEditGUI/TemplateSpawnersEditGUI
)
### Feature Improvements
- Implemented a complete chat input listener system
- Supports numeric, text, and decimal input validation
- Integrated AsyncPlayerChatEvent for Bukkit compatibility
- Used BukkitScheduler to ensure thread safety
- Completed configuration data reading system
-
All GUI interfaces now display actual data from configuration files
- Supports real-time configuration reading and interface updates
- Implemented advanced management interface system
- Item Reward Management GUI
(ItemRewardManageGUI
)
- Command Reward Management GUI
(CommandRewardManageGUI
)
- Time Reward Management GUI
(TimeRewardManageGUI
)
- Item Condition Management GUI
(ItemConditionManageGUI
)
- Composite Condition Management GUI
(CompositeConditionManageGUI
)
- Completed spawner management system
- Spawner editing function
(SpawnerEditGUI
)
- Spawner teleport function
- Spawner add function
(SpawnerAddGUI
)
- Implemented location setting system
- Reach area location setting function
## Version 1.0.9.7 (2025-06-03)
### New Features
- Integrated bStats statistics system
- Added plugin usage data collection feature to help developers understand plugin usage
- Implemented custom statistical charts
: active dungeon count, available template count, integrated external plugins, used language
- Used official bStats-bukkit 3.0.2 version to ensure data security and privacy protection
- Plugin ID
: 26069, statistics can be viewed at https://bstats.org/plugin/bukkit/SagaDungeons
### Technical Improvements
- Added bStats dependency and shadow plugin relocation configuration in build.gradle
- Used `implementation 'org.bstats:bstats-bukkit:3.0.2'` to add dependency
- Configured shadow plugin to relocate bStats to `cn.i7mc.sagadungeons.libs.bstats` package to avoid conflicts with other plugins
- Added bStats initialization method in SagaDungeons main class
- Called `initializeMetrics
(
)` method in onEnable method
- Added four custom statistical charts to collect plugin usage data
- Added statistical methods to DungeonManager and TemplateManager classes
- Added `getActiveDungeonCount
(
)` method to count active dungeons
- Added `getTemplateCount
(
)` method to count available templates
### Data Collection Notes
- **Active Dungeon Count**
: Real-time statistics of the number of dungeon instances running on the server
- **Available Template Count**
: Statistics of the total number of dungeon templates configured on the server
- **Integrated External Plugins**
: Shows successfully integrated external plugins
(Vault, PlayerPoints, MythicMobs, PlaceholderAPI
)
- **Used Language**
: Statistics of the language setting configured for the plugin
(Chinese/English, etc.
)
### Privacy Protection
- Data collected by bStats is completely anonymous and does not include
any personal information about servers or players
-
All data is used only for statistical analysis to help improve plugin features and performance
- Server administrators can disable data collection through the bStats configuration file
## Version 1.0.9.6 (2025-06-03)
### New Features
- Implemented visual effects system after dungeon completion
- Added firework effect after completion
: player launches 3 random style fireworks every 3 seconds until teleported out of the dungeon
- Implemented Title display
: shows
"Congratulations on completing the dungeon" and a countdown subtitle
- Added countdown reminder system
: reminds every 5 seconds before the last 3 seconds, then every 1 second for the last 3 seconds
- Used Bukkit native API for Title display to ensure Bukkit server compatibility
### Feature Improvements
- Optimized user experience after dungeon completion
- Moved hardcoded time values to config.yml, supporting custom configuration
- Implemented configurable countdown system, administrators can customize reminder intervals and teleport delays
-
All reminder messages are customizable in the message configuration file, avoiding hardcoding
### Bug Fixes
- Fixed completion message configuration structure issue
- Resolved inconsistent message key path issue
: unified to use 'dungeon.completion.success' path
- Corrected incorrect position of 'completion' node in English message file messages_en.yml
- Ensured consistent structure between Chinese and English message files to avoid
"message not found" errors
### Configuration Updates
- Added completion-related time configurations in config.yml
```yaml
completion:
teleport-delay
: 10
# Teleport delay after completion (seconds)
countdown-interval
: 5
# Countdown reminder interval (seconds)
final-countdown
: 3
# Final countdown start time (seconds)
firework-interval
: 3
# Firework launch interval (seconds)
```
- Added completion-related messages in message configuration files
- Countdown reminder message
: `dungeon.completion.countdown`
- Final countdown message
: `dungeon.completion.final-countdown`
- Title display messages
: `dungeon.completion.title` and `dungeon.completion.subtitle`
## Version 1.0.9.4 (2025-05-24)
### New Features
- Implemented time-based early completion reward system
- Added `TimeReward` reward class, supporting different rewards based on completion time
- Added `timeRewards` configuration support in `DungeonTemplate`, using `TreeMap` to intelligently match the best time reward
- Extended `TemplateManager`'s `parseTimeString()` method to support multiple time formats
: `3600`
(seconds
), `
"1h"`
(hours
), `
"90m"`
(minutes
), `
"30s"`
(seconds
), `
"1d"`
(days
)
- Added `giveTimeRewards
(
)` method in `RewardManager` to handle time reward distribution and message display
- Modified `DungeonInstance.handleCompletion
(
)` method to automatically calculate completion time and grant corresponding time rewards
### Features
- **Intelligent Time Matching**
: Uses `TreeMap.floorEntry
(
)` method to automatically select the best qualifying time reward
- **Flexible Time Formats**
: Supports pure numeric seconds and time formats with units, with automatic parsing and conversion
- **Complete Message System**
: Displays time taken in completion messages, dedicated time reward message prompts
- **Backward Compatible**
: Does not affect existing basic reward system, optional feature, fully adheres to the project's modular architecture
### Configuration Example
```yaml
# Time Rewards Configuration - Give different rewards based on completion time
timeRewards
:
# Complete within 1 hour - Highest reward
"1h":
commands
:
-
"give %player% diamond 5"
-
"eco give %player% 1000"
-
"say %player% completed the dungeon within 1 hour and received diamond rewards!"
# Complete within 1.5 hours - Medium reward
"90m":
commands
:
-
"give %player% gold_ingot 10"
-
"eco give %player% 500"
-
"say %player% completed the dungeon within 1.5 hours and received gold ingot rewards!"
# Complete within 2 hours - Basic reward
"2h":
commands
:
-
"give %player% iron_ingot 20"
-
"eco give %player% 200"
-
"say %player% completed the dungeon within 2 hours and received iron ingot rewards!"
```
### Message Configuration Updates
- Updated completion messages in `messages.yml` to include time taken display
- Added time reward related message configurations
: `dungeon.reward.time.header`, `dungeon.reward.time.description`, `dungeon.reward.time.footer`
- Updated dungeon template example `templates/example/config.yml` with time reward configuration examples
## Version 1.0.9.3 (2025-05-18)
### Bug Fixes
- Fixed world unload failure when deleting a dungeon using `/sd admin delete` command
- Implemented a complete world unload and deletion process
: 1. Teleport players out of the world 2. Save the world 3. Delay 20 ticks 4. Unload the world 5. Delay another 20 ticks 6. Delete world files
- Added appropriate delay mechanisms to ensure each operation has enough time to complete, avoiding NoSuchFileException errors
- Retained player teleportation and entity cleanup steps to ensure safe deletion
- Fixed issues caused by `session.lock` and `uid.dat` files during world file copying
- Added filtering for `session.lock` file during file copying process to avoid copying locked files
- Added filtering for `uid.dat` file during file copying process to prevent created dungeon worlds from being identified as duplicate worlds
- Also ignored these special files during file count and size statistics to ensure accurate progress calculation
### Performance Optimizations
- Optimized dungeon world generation process, significantly reducing main thread lag
- Added creation lock mechanism to prevent server overload from multiple simultaneous dungeon creations
- Used Java 17 new features to optimize file operations, improving file copy and delete efficiency
- Improved asynchronous file copying mechanism, using Files.walk and Stream API instead of traditional recursive methods
- Optimized world loading parameters to reduce resource consumption
- Added detailed performance logs to record file operation and world loading times
- Used latest Paper 1.20.1 API, such as WorldCreator's keepSpawnLoaded method and GameRule enum
### Code Optimizations
- Refactored world unload and delete related methods in WorldManager class
- Improved `deleteDungeonWorld` method to implement a step-by-step world unload and deletion process
- Optimized `deleteWorldFolder` method, adding world saving, delayed unload, and delayed deletion mechanisms
- Unified world deletion logic to ensure code is concise, efficient, and operations are safe and reliable
- Added more detailed debug logs, recording each step of world unloading and deletion
- Optimized file operation methods in BukkitFileUtil class
- Improved file deletion logic, using reverse sorting to ensure files and subdirectories are deleted before parent directories
- Optimized file copying process into two steps
: first create
all directory structures, then copy
all files
- Added filtering mechanism for special files to avoid copying locked files
- Moved
all hardcoded log messages to debugmessage.yml file, making them customizable
### Feature Improvements
- Improved dungeon world cleanup mechanism on server shutdown, ensuring
no remnant worlds are left
- Optimized world creation process, adding more game rule settings like disabling fire spread, random tick, etc.
- Improved world loading parameter configuration, reducing resource consumption and server load
- Added creation lock status check and提示 messages; when a dungeon is being created, other players will receive friendly prompts
- Enhanced world unload and delete mechanism, adding delayed processing and status checks to ensure safe and reliable operations
- Added support for English message file, fixed missing
"admin-close" message key issue
## Version 1.0.9 (2025-05-17)
### Code Optimizations
- Optimized command structure, moving spawner management commands from player commands to admin commands
- Created new `SpawnerAdminCommand` class for managing dungeon spawners
- Modified `AdminCommand` class to add calls to `SpawnerAdminCommand`
- Updated command help information to reflect the new command structure
- Added `getCurrentDungeonId` method to `DungeonManager` class to get the player's current dungeon ID
### Feature Improvements
- Improved command permission management, ensuring only administrators can manage spawners
- Maintained compatibility with existing features; spawner management functionality remains the same, only the command location has moved
## Version 1.0.8 (2025-05-17)
### Feature Improvements
- Optimized MythicMobs monster spawning mechanism
- Added `MobSpawnerManager` class, responsible for managing monster spawning in dungeons
- Added `spawnMob` method in `MythicMobsHook` class for direct monster spawning
- Modified `SpawnerCommand` class to use the new method for spawning monsters
- Added code in `DungeonManager` class to initialize spawners after successful dungeon world creation and clean up spawners when deleting dungeons
### Bug Fixes
- Fixed issue where MythicMobs monster spawn points set by command would generate persistent spawner configuration files in the MythicMobs plugin directory
- Fixed issue where monsters did not spawn after players entered the dungeon, resolved by improving location parsing and delaying spawner initialization
- Fixed issue where spawner locations incorrectly saved temporary dungeon world names
(e.g.,
"sd_001-fba"
); now only saves coordinate information
- Fixed issue where location strings containing template names
(e.g.,
"fba,x,y,z,yaw,pitch"
) caused parsing errors
- Improved monster spawning logic,
no longer relying on persistent spawner configuration files
- Optimized monster cleanup mechanism on dungeon closure, ensuring
no remnant entities are left
### Code Optimizations
- Implemented a more efficient monster spawning method, improving performance
- Simplified location parsing logic, removed redundant code, maintaining high readability
- Completely removed debug log outputs, making the code cleaner
- Modified `SpawnerCommand` class to use `LocationUtil.locationToStringWithoutWorld` method for saving locations, avoiding saving temporary dungeon world names
- Enhanced location parsing logic in `MobSpawnerManager` class to handle various location string formats
- Supports one-time spawners and periodic spawners to meet different needs
- Followed modular, visual, unified, and minimalist principles, simplifying the monster spawning process
## Version 1.0.7 (2025-05-17)
### New Features
- Implemented dungeon trigger system
- Added `DungeonTrigger` interface, supporting custom trigger implementations
- Implemented `LevelJumpTrigger` class for handling dungeon level jumps
- Added `TriggerManager` class for managing and executing triggers
- Supports trigger priority and condition combinations
- Optimized trigger execution logic to ensure thread safety
### Feature Improvements
- Optimized dungeon level switching mechanism, using trigger system instead of direct jumps
- Improved trigger condition checking logic, supporting more complex condition combinations
- Enhanced trigger execution configurability, supporting custom execution order and priority
### Configuration Example
```yaml
triggers:
level_jump:
type
: LEVEL_JUMP
priority
: 1
conditions:
- type
: MOB_KILL
count
: 10
- type
: REACH_AREA
location
:
"world,100,64,100"
radius
: 3.0
actions:
- type
: JUMP_TO_LEVEL
target_level
: 2
```
## Version 1.0.6 (2025-05-17)
### New Features
- Enhanced dungeon completion condition system
- Added support for condition combination modes
(AND/OR
)
- Implemented condition priority system
- Supports multi-level condition combinations
- Optimized condition progress display
### Feature Improvements
- Optimized completion condition configuration structure, supporting more flexible condition combinations
- Improved condition progress calculation logic, providing different progress calculation methods for AND/OR modes
- Enhanced condition description system, providing more detailed progress information
### Configuration Example
```yaml
completion
:
# Composite condition example
composite:
type
: AND
# or OR
priority
: 1
conditions:
condition1:
killCount:
count
: 10
condition2:
reachArea:
location
:
"world,100,64,100"
radius
: 3.0
```
## Version 1.0.5 (2025-05-17)
### Fixed Issues
- Fixed issue where GUI dungeon creation failed; now GUI dungeon creation and command dungeon creation use the same message path and parameters
- Fixed "Message not found
: admin-close
" error by correctly identifying message hierarchy in YAML file and updating code path reference to "command.death.admin-close
"
## Version 1.0.4 (2025-05-17)
### New Features
- Added `/sd admin gui` command to open the GUI management interface
- Added related command help and prompt messages in `messages.yml`
### Fixed Issues
- Fixed issue where deleting remnant dungeon worlds failed on server startup
- Fixed issue where administrators using `/sd admin delete <dungeonID>` command could not successfully delete dungeon world folders
- Fixed "dungeon.admin-close
" message not found issue, ensuring players receive correct prompts when their dungeon is closed by an admin
### Code Optimizations
- Optimized world deletion logic in `WorldManager` class, adding folder existence checks and delayed deletion mechanisms
- Improved `deleteDungeonWorld` and `deleteWorldFolder` methods to ensure delete operations are executed on the main thread
- Enhanced logging, adding more detailed operation information and error prompts
- Followed modular, visual, unified, and minimalist principles, simplifying the world deletion process
## Version 1.0.3 (2025-05-17)
### Fixed Issues
- Fixed issue where after deleting a dungeon with `/sd admin delete <dungeonID>`, it was still possible to join it via `/sd join <dungeonID>`
- Optimized code in `WorldManager` class regarding world unloading and deletion, simplified into three clear steps: 1. Teleport players out of the world 2. Unload the world 3. Delete world files
- Improved `DungeonManager.deleteDungeon()` method to immediately remove dungeon instance from active dungeon list and set dungeon state to `DELETING`
- Enhanced `JoinCommand` and `DungeonManager.joinDungeon()` methods, adding checks for dungeon state to prevent players from joining dungeons that are being deleted or are completed
- Added new message key `command.join.dungeon-not-available` in `messages.yml` to inform players that a dungeon is unavailable
### Code Optimizations
- Refactored `WorldManager` class, splitting the complex `cleanupRemnantWorlds` method into multiple single-responsibility methods
- Created `teleportPlayersOutOfWorld` method specifically for player teleportation
- Created `cleanupLoadedDungeonWorlds` and `cleanupUnloadedDungeonFolders` methods to handle loaded and unloaded dungeon worlds respectively
- Created `tryLoadAndDeleteWorld` and `deleteWorldFolder` methods to handle world loading and deletion
- Reduced code nesting levels, improving readability and maintainability
## Version 1.0.2 (2025-05-17)
### Fixed Issues
- Fixed issue where respawn point coordinates in dungeon templates included temporary dungeon world names; now only saves coordinate information (X, Y, Z, Yaw, Pitch) without world name
- Fixed incomplete command help information, adding missing command descriptions, including `/sd leave`, `/sd help`, and `/sd admin help` etc.
- Fixed respawn point saving logic in `SetSpawnCommand` class, ensuring correct use of template respawn points in different dungeon instances
- Fixed respawn logic in `DeathManager` class; now players are correctly teleported to the respawn point set in the template after death
### Feature Improvements
- Optimized `LocationUtil` class, adding `locationToStringWithoutWorld` and `stringToLocationWithoutWorld` methods for handling coordinates without world names
- Improved player teleportation logic in `DungeonManager` class, using new coordinate handling methods to ensure players are correctly teleported to dungeon respawn points
- Added spawner ID prompt messages in `messages.yml` to improve user experience
- Perfected command help system, ensuring all commands have corresponding help information
## Version 1.0.1 (2025-05-16)
### Fixed Issues
- Fixed issue where player_cooldowns.yml file would not reset after server restart; now automatically clears all player dungeon creation cooldowns on plugin startup
- Fixed auto-completion for "/sd spawner set
" command; now only shows concise spawner ID suggestions (e.g., mob1, boss, spawn1) and added prompt messages
- Fixed API compatibility issue in MythicMobsHook class, resolving "setRemainingCooldownSeconds
" method not found error
- Improved implementation of one-time spawners; now tries multiple methods to set spawners to refresh only once
- Added more detailed log output for easier troubleshooting of spawner-related issues
### Feature Improvements
- Optimized spawner system: when cooldown parameter is not specified (e.g., "/sd spawner set fb1 WolfKing 1
"), spawner will be set as a one-time spawner with a default cooldown of 99999999 seconds
- When cooldown parameter is specified (e.g., "/sd spawner set fb1 WolfKing 1 30
"), spawner will respawn at the specified time after the monster is killed
- Added spawner command related prompt messages in messages.yml, supporting custom configuration
## Version 1.0.0 (2025-05-16)
### New Features
- Dungeon System Core Features
- Dungeon creation and management
- Dungeon world copying and loading
- Dungeon timeout and automatic cleanup
- Player teleportation and location recording
- Dungeon public/private settings
- Player permission management
- Dungeon Creation Condition System
- Gold condition (Vault)
- Points condition (PlayerPoints)
- Item condition
- Level condition
- Custom condition interface
- Dungeon Completion System
- Kill all condition
- Reach area condition
- Kill specific monster condition
- Kill count condition
- Custom condition interface
- Dungeon Reward System
- Gold reward
- Points reward
- Item reward
- Experience reward
- Command reward
- Custom reward interface
- Dungeon Death Management System
- Death limit
- Kick-out handling after reaching limit
- Custom revive item system
- Respawn point setting and teleportation
- Player Data Persistence
- Player data model design
- Data saving and loading
- Statistical data collection
- Command System
- `/sd create <template>` - Create a dungeon
- `/sd list` - List all dungeons
- `/sd stats [player]` - View dungeon statistics
- `/sd invite <player>` - Invite a player to a dungeon
- `/sd join <ID/playername>` - Join a dungeon
- `/sd leave` - Leave current dungeon
- `/sd kick <player>` - Kick a player from a dungeon
- `/sd public` - Toggle dungeon public/private status
- `/sd spawner <set/remove/list>` - Manage spawners
- `/sd help` - Display help information
- `/sd reload` - Reload configuration
- `/sd admin reload` - Reload configuration
- `/sd admin delete <dungeonID>` - Delete specified dungeon
- `/sd admin tp <dungeonID>` - Teleport to specified dungeon
- `/sd admin list` - List all dungeons
- `/sd admin createtemplate <templateName> [worldPath]` - Create a new dungeon template
- `/sd admin setworld <templateName>` - Set current world as dungeon template's world
- `/sd admin copyworld <templateName> <worldName>` - Copy specified world to dungeon template's world directory
- `/sd admin setitem <templateName> <type> [amount]` - Set held item as dungeon condition or reward
- `/sd admin forceclose <dungeonID/all>` - Force close specified dungeon or all dungeons
- `/sd admin setspawn <templateName>` - Set current location as dungeon template's respawn point
- `/sd admin help` - Display admin help information
- Plugin Integrations
- Vault Integration (Economy system)
- PlayerPoints Integration (Points system)
- MythicMobs Integration (Monster system)
- PlaceholderAPI Integration (Variable system)
### Optimizations
- Asynchronous world copying to avoid server lag
- Use of ReadWriteLock mechanism to protect dungeon instance data
- Implementation of player location recording and recovery mechanism
- All time-consuming operations executed in asynchronous threads
- Use of thread-safe collection classes
- Use of reflection mechanism to ensure compatibility with different versions of MythicMobs API
### Documentation
- User Guide
- Player Command Guide
- Admin Command Guide
- Configuration File Explanation
- Dungeon Completion Conditions and Rewards Configuration Explanation
- Death Limits and Revive Item Configuration Explanation
- Developer Guide
- API Usage Instructions
- Extension Development Guide
- Code Structure Explanation
- Custom Completion Conditions and Rewards Development Guide
- Custom Death Handling and Revive Mechanism Development Guide
## Version Plan
### Version 1.1.0
- Dungeon Leaderboard System
- Multi-stage Dungeon Support
- Dungeon Difficulty Adjustment
- Custom Dungeon Event Triggers
### Version 1.2.0
- Enhanced Dungeon Statistics System
- Dungeon Achievement System
- Dungeon Time-limited Challenge Mode
- GUI Interface Feature Expansion