Name: FluffyBossSpawner (SLBossSpawner) Version: 2.0.1 Type: Minecraft Plugin (Paper/Spigot) Language: Java 21 Build Tool: Maven Primary Dependency: MythicMobs
dev.salyvn.slBossSpawner/
├── boss/ # Core boss management
├── broadcast/ # Warning and notification system
├── commands/ # Command handlers
├── config/ # Configuration management
├── listener/ # Event handlers and tracking
├── persist/ # Data persistence
├── placeholder/ # PlaceholderAPI integration
├── reward/ # Reward distribution
└── utils/ # Utility classes
- BossConfig.java - Boss configuration data model
- BossEntityHelper.java - Entity manipulation utilities
- BossInstance.java - Individual boss lifecycle management
- BossScheduler.java - Spawn scheduling and timer coordination
- BroadcastManager.java - Centralized broadcast coordination
- SpawnWarningTask.java - Countdown warning task
- BossCommand.java - Command executor (
/slbossand/slbs)
- ConfigManager.java - Main config loader
- MessageManager.java - Multi-language message handling
- ScheduleManager.java - Schedule config parser
- BossDeathListener.java - Boss death event handler
- DamageTracker.java - Damage contribution tracking
- DamageResult.java - Damage ranking result
- SupportTracker.java - Support action tracking
- SupportResult.java - Support ranking result
- TankTracker.java - Tank/absorption tracking
- TankResult.java - Tank ranking result
- BossStateManager.java - Boss state persistence across restarts
- PendingRewardManager.java - Offline reward queue management
- BossPlaceholder.java - PlaceholderAPI expansion
- RewardManager.java - Reward distribution coordinator
- ItemProtectionListener.java - Owner-only item pickup
- PendingRewardListener.java - Offline reward delivery
- SLBossSpawner.java - Main plugin class
- ColorUtils.java - Color code utilities
- TimeUtils.java - Time formatting and parsing
- Time-based scheduling with timezone support
- Configurable spawn intervals and locations
- Force spawn/despawn commands
- State persistence across server restarts
Types tracked:
- Direct melee/ranged damage
- Projectile damage
- Pet/tamed entity damage
- TNT damage
- Area effect damage
- Damage-based ranking
- Last-hit bonus multiplier
- Commands, vanilla items, MMOItems support
- Offline reward queuing with YAML persistence
- Spawn countdown warnings (chat, title, bossbar)
- Death announcements
- Configurable message templates
- Multi-language support (EN, VI)
- Leash system (teleport-back if too far from spawn)
- Optional chunk loading at spawn location
- Automatic cleanup on expiry
- Spawn warning cancellation
- MythicMobs - Boss entity management (required)
- PlaceholderAPI - Custom placeholders (optional)
- MMOItems - Advanced item rewards (optional)
BossScheduler.checkSpawns()
→ BossInstance.spawn()
→ MythicMobs API spawn
→ SpawnWarningTask (countdown)
→ BossStateManager.save() (persistence)
BossDeathListener.onMythicMobDeath()
→ Tracker.buildResult() (damage/support/tank)
→ RewardManager.distributeRewards()
→ Command sanitization (C1 fix)
→ PendingRewardManager.queueCommand() (offline players)
→ BossInstance.cleanup()
→ Tracker.stopTracking()
PlayerJoinEvent
→ PendingRewardListener
→ Load pending-rewards.yml
→ Command validation (C2 fix)
→ Bukkit.dispatchCommand()
→ Remove from pending queue
| File | Purpose |
|---|---|
config.yml |
General settings, prefix, debug, language |
schedules.yml |
Boss spawn schedules, locations, broadcast |
reward.yml |
Reward tiers, items, commands per boss |
message.yml |
English messages |
message-vi.yml |
Vietnamese messages |
boss-state.yml |
Boss state persistence (auto-generated) |
pending-rewards.yml |
Offline reward queue (auto-generated) |
- Player names - Sanitized in
RewardManager:194before command construction - Drop table names - Sanitized in
RewardManager:211(C1 fix) - Pending commands - Validated in
PendingRewardListener:44(C2 fix)
- Main plugin field
bossSchedulermarked volatile (H2 fix) - All command execution on main thread (Bukkit guarantee)
- Timer tasks run on main thread via
runTaskTimer
- YAML parsing with type checking (H3 fix)
- Tracker cleanup after data read (H1 fix)
- State persistence on shutdown (
saveSync)
- C1: Drop table name sanitization to prevent command injection
- C2: Pending command validation against shell metacharacters
- H1: Removed duplicate tracker cleanup calls
- H2: Volatile scheduler reference for thread safety
- H3: Safe YAML number parsing with instanceof check
- H4: Calculate next spawn after force spawn
See CHANGELOG.md and security-fixes.md for details.
- Total Java files: 26
- LOC: ~2,500 (estimated)
- Package count: 8
- External dependencies: MythicMobs (required), PlaceholderAPI (optional), MMOItems (optional)
Build command:
mvn packageOutput: target/SLBossSpawner-2.0.0.jar
Test coverage: Not currently implemented
README.md- Setup and usage guidedocs/wiki.html- Detailed feature documentationdocs/CHANGELOG.md- Version historydocs/security-fixes.md- Security implementation detailsdocs/codebase-summary.md- This file
- Empty drop table names after sanitization fail silently (low impact)
- Reload during death event processing may reference old scheduler (pre-existing edge case)
- No automated test coverage
- Thread safety relies on Bukkit main-thread guarantees