
MythicSkywars
The best and most up to date free skywars plugin.
Nightly Build - may be unstable.\n\nCommit: c1816bcaed497c5d3fd5473511e4c93b125c639c\n\nfix(utilities): update player statistics loading mechanism
- Refactor player statistics initialization to use a callback for loading stats.
- Ensure player updates occur after stats are loaded, improving reliability in lobby state management.
Nightly Build - may be unstable.\n\nCommit: 90aa6a6128e602994a99ef7b0a001250e9b1f7ff\n\nrefactor(economy): remove built-in Vault economy provider
- Delete BuiltInVaultEconomy class and all registration logic
- Remove economyProvider config option and related methods
- Remove ServicePriority import no longer needed
- Simplify economy initialization to rely on external providers only
- Add warning message when economy is enabled but no provider found
- Reduce plugin startup complexity by eliminating custom economy implementation
Nightly Build - may be unstable.\n\nCommit: 31d97e05fe49f8a3360d09b4c2357292ae815005\n\nfix(utilities): make VaultUtils.give() async for built-in economy
- Wrap addBuiltInBalance() call in async task using Bukkit scheduler
- Extract UUID and player name to final variables before async execution
- Prevent blocking main thread during balance updates for built-in economy provider
- Ensures non-blocking economy transactions consistent with async database operations
Nightly Build - may be unstable.\n\nCommit: b05eeb89f7ae0243ce18e7d5a6f7bc45736a63b0\n\nfix(clients): add graceful fallback handling for optional client bridges
- Wrap LunarApolloBridge initialization and reload calls in try-catch blocks to handle missing Apollo plugin
- Wrap FeatherClientBridge initialization and reload calls in try-catch blocks to handle missing Feather plugin
- Wrap LabyModBridge initialization and reload calls in try-catch blocks to handle missing LabyMod plugin
- Add NoClassDefFoundError exception handling in LunarCmd to provide user feedback when Apollo is unavailable
- Add exception handling in LobbyWaterPortalListener for optional Apollo water portal integration
- Add exception handling in PlayerQuitListener for all three optional client bridge cleanup methods
- Add exception handling in ChestRefillVisualManager, MatchManager, and PlayerManager for client-specific features
- Log informative messages during config reload when optional client plugins are not available
- Prevents plugin startup failures when optional client bridge dependencies are n
Nightly Build - may be unstable.\n\nCommit: b3021c8082230bc82b468709f1d975a559bbced1\n\nfeat(database): replace normalizeYamlKey with cosmeticKey for cosmetic migrations
- Replace normalizeYamlKey calls with cosmeticKey in glasses migration
- Replace normalizeYamlKey calls with cosmeticKey in killsounds migration
- Replace normalizeYamlKey calls with cosmeticKey in taunts migration
- Replace normalizeYamlKey calls with cosmeticKey in trails migration
- Replace normalizeYamlKey calls with cosmeticKey in killeffects migration
- Replace normalizeYamlKey calls with cosmeticKey in sounds migration
- Add cosmeticKey method that produces lowercase keys without separators
- Cast particle offset and speed values to integers in trails migration
- Ensure speed value has minimum of 1 in trails migration
- Improves consistency with plugin's cosmetic key format across all migration types
Nightly Build - may be unstable.\n\nCommit: b0a303ab81d78e24c1ea6d94bd4b4695ca639b16\n\nfeat(economy): implement built-in Vault economy provider and enhance migration command
- Introduce a built-in Vault economy provider for better compatibility with economy systems.
- Update MythicSkywars to register and unregister the built-in economy provider based on configuration.
- Enhance the USW migration command with checks to prevent concurrent migrations and notify players during data imports.
- Improve database handling for player economy data, ensuring proper storage and retrieval.
- Add new commands and tab completions for economy-related actions, enhancing user experience.
Nightly Build - may be unstable.\n\nCommit: 620d5fe3619e2f1bf9e15b64c6eda8436ec3ea7a\n\nfeat(dependencies): add MySQL connector to project dependencies
- Introduce MySQL Connector/J version 8.0.33 to both MythicSkywarsCore and mythicskywars-assembly POM files.
- Ensure the connector is included in the compile scope for proper database interactions.
Nightly Build - may be unstable.\n\nCommit: 7a1e26923df73fbb1bdf45c91f427040de7c4a86\n\nfix(database): improve SQL error handling and driver loading
- Replace stack trace logging with more informative error messages for database initialization and table creation failures.
- Ensure MySQL driver is loaded correctly, with fallback handling for different driver versions.
- Add validation to check the active JDBC driver and throw an exception if it is not MySQL, improving connection reliability.
Nightly Build - may be unstable.\n\nCommit: f251d5d160c2e5e2c3adf684e7ff050b9761af9c\n\nfeat(workflows,utilities): enhance nightly build process and update checker functionality
- Add NIGHTLY_TAG to the nightly build workflow for better version tagging.
- Update nightly build output to include the new tag in the build logs.
- Enhance UpdateChecker to fetch release details directly by tag, improving accuracy in version resolution.
- Introduce a new method to handle fetching release JSON by tag, ensuring correct asset retrieval for updates.
Nightly Build - may be unstable.\n\nCommit: 631d0b5882d18a33b50d78beff825cdeb5ac530c\n\nfeat(database): enhance MongoDB migration configuration and debugging
- Add support for optional authentication database and mechanism in MongoDB configuration
- Implement migration debug logging to provide detailed connection and credential information
- Introduce exception logging for better error tracking during migration processes
- Update config.yml to include new fields for authDatabase, authMechanism, and debug options
Nightly Build - may be unstable.\n\nCommit: e53b2ee2eae918c3844a41ba7a3804da65a558d7\n\nfeat(clients): add LabyMod 4 Server API integration with Discord RPC
- Add LabyModBridge with full LabyMod 4 Server API support
- Implement Discord Rich Presence integration for lobby and in-game states
- Add economy display widget for player balance tracking
- Implement permission-based feature toggles for LabyMod addons
- Add addon blacklist/whitelist configuration system
- Integrate LabyMod player join/quit lifecycle management
- Add LabyMod configuration files (config.yml, addons.yml)
- Add LabyMod Server API dependency to pom.xml
- Update main plugin lifecycle to initialize and reload LabyModBridge
- Remove redundant Feather UI disabled log message
- Gracefully handle missing LabyMod Server API plugin with no-op fallback
Nightly Build - may be unstable.\n\nCommit: 50c967c7f9d764ef4dde3d856811cc670703ecff\n\nfeat(startup): block logins during map loading and add server readiness state
- Add mapsReady flag to track when all maps finish loading during startup
- Create StartupLoginBlocker listener to prevent player joins before maps are ready
- Allow admins with sw.bypass.startup permission to join during startup
- Mark server as ready after all maps load and log completion
- Fix SWLobbyTeleportCmd to send teleport confirmation and error messages to player
- Update GameMapManager to set mapsReady flag and log server readiness
- Add MapSearchListener import to MatchManager for upcoming functionality
- Prevents players from joining incomplete servers in bungee mode
Nightly Build - may be unstable.\n\nCommit: a699115dde81bc1fa2d5c249f13298f363104ae0\n\nchore(build): add ASM dependencies to maven-shade-plugin
- Add org.ow2.asm:asm dependency at version 9.8
- Add org.ow2.asm:asm-commons dependency at version 9.8
- Ensures shade plugin has required bytecode manipulation libraries for proper class relocation and transformation
Nightly Build - may be unstable.\n\nCommit: ade0f7aa041fe78d85477fbf5a8fe89a28a03c6f\n\nfix(match): skip safe-spawn resolution for waiting lobby spawns
- Add conditional check to only apply safe-spawn resolution for arena spawns
- Prevent unnecessary teleport location validation for waiting lobby (auto-generated with known-safe platform)
- Improve spawn handling by distinguishing between arena and lobby spawn contexts
Nightly Build - may be unstable.\n\nCommit: b6a78a14b94e035d8800511f43f5a9412f64554d\n\nfix(menus): add null checks for kit filename and name comparisons
- Add null check for kit filename before calling equalsIgnoreCase in getKit method
- Add null check for kit name before calling equalsIgnoreCase in getKitByName method
- Extract kit properties to local variables for improved readability and safety
- Prevent potential NullPointerException when kit filename or name is null
Nightly Build - may be unstable.\n\nCommit: 1748e2ff9739754446c12e1273fb138134d0966f\n\nfeat(game,commands): add arena editor exit on leave and stagger map loads
- Add editor mode exit handler in LeaveMatchExecutor to allow players to exit arena editor via /leave command
- Implement map load staggering system to prevent chunk system overload during bulk map loading
- Add static counter and TICKS_BETWEEN_MAP_LOADS constant to GameMap for controlling load delays
- Add resetLoadStagger() method to reset stagger counter before and after bulk map operations
- Update GameMapManager to reset stagger counter before loading all maps and after queuing completes
- Calculate dynamic delay for map reloads based on stagger counter to distribute load over time
- Improves server stability during plugin startup and map refresh cycles by preventing simultaneous chunk loading
Nightly Build - may be unstable.\n\nCommit: feaed13fb4dc702608f284aea6898fa6d2090a7a\n\nfeat(updates): improve beta release version detection from release names
- Rename bestTag to bestVersion for clarity on what is being compared
- Extract version from release name when tag is generic (e.g., nightly)
- Parse version from parenthesized format in release name field
- Simplify tag position lookup by reusing tagPos variable
- Handle cases where tag_name doesn't contain semantic version information
- Improve version comparison logic to work with extracted versions from release metadata
Nightly Build - may be unstable.\n\nCommit: e0bb71c6cef94866280021d2bb1ce44c50f56568\n\nchore(messages): reorganize messages.yml structure for better organization
- Move waiting-lobby-auto message from maps section to top-level maps section
- Relocate copyasduo command messages to maps section for logical grouping
- Move soul well tier names (Warlock, Necromancer, Death Angel) from maps to soulwell section
- Improve message hierarchy and reduce nesting complexity
- Consolidate related messages by feature area for easier maintenance
Nightly Build - may be unstable.\n\nCommit: 60aacc82e6b6bb5418ded7c2d8570f4d1cf01b81\n\nfeat(updates): improve version detection for beta releases
- Add support for parsing multiple releases when checking beta versions
- Implement version comparison logic to find the newest release from array response
- Extract jar download URL from the newest release found
- Refactor extractJsonString to support searching from a specific index with new extractJsonStringFrom method
- Handle both single release (stable) and array response (beta) formats from GitHub API
- Improve robustness of version detection by comparing all available releases instead of just the first one
Nightly Build - may be unstable.\n\nCommit: fb4d6947481285073f67a4027eec3db45f0479e9\n\nfix(listeners,managers): move menu open into async task and improve material detection
- Move ArenaSetupMenu.open() call inside async task in ChatListener to ensure it executes after gMap.update() completes
- Apply fix to both name and creator setting branches for consistency
- Refactor isSolidOrLiquid() to use string matching for water and lava detection instead of checking deprecated material constants
- Improve null safety with early return in material detection logic


