This update focuses on important changes suggested by people because of request - The plugin now works on Spigot! However it's recommended to use Paper
- Removed the notification sent to me if I join a server that's using mGiveaway
- Reduced jar size by 5MB
- Finally got the update checker to work
- Added a new bStats chart
- Fixed an issue where you had to restart the server to properly load a giveaway
- Fixed the mention message error when there were no giveaway entries
Propably coming in v0.8:
- Free the config.yml file from giveaways - move them entirely to the database
- ⬆ Implement a command for giveaway editing
- Improve the config update feature
- Improve error handling
mGiveaway v0.5 Changelog - Enhanced Configurability Update
This update focuses on significantly increasing plugin configurability and improving player data handling for a more robust and user-friendly experience.
✨ Features
-
Extensive Text Configurability:
- All User-Facing Text Configurable: Nearly all text displayed to users, both in-game and in Discord, is now fully configurable through the
config.yml
file. - Translatable Messages: Server owners can now easily translate all plugin messages into different languages by editing the
config.yml
. - Configurable Message Categories: Messages are organized into logical sections within
config.yml
(e.g.,messages.discord
,messages.in_game
,messages.error
,discord_command
) for easier management and localization. - Configurable Discord Command Options: Descriptions for all Discord slash command options (name, prize, duration, winners, etc.) are now configurable, allowing for customization and localization of command help text.
- Configurable Button and Modal Text: Text for Discord giveaway buttons and join modals (titles, input questions, placeholders) are now configurable.
- Configurable Discord Log Embeds: The format and content of giveaway log messages sent to Discord are now fully customizable via the new
discord.bot.log_embed
section inconfig.yml
.
- All User-Facing Text Configurable: Nearly all text displayed to users, both in-game and in Discord, is now fully configurable through the
-
Asynchronous Offline Player Handling for Requirements:
- Non-Blocking Player Lookups: Implemented asynchronous API calls to fetch
OfflinePlayer
data when players are not cached, preventing the main server thread from blocking during requirement checks. - Improved Responsiveness: Plugin remains responsive even when performing player data lookups for offline players, ensuring a smoother user experience, especially during giveaway entry.
- Callback-Based Requirement Checks: Utilizes an asynchronous callback mechanism (
checkRequirementsAsync
) to handle requirement checks and process results efficiently without freezing the server.
- Non-Blocking Player Lookups: Implemented asynchronous API calls to fetch
-
Automatic Update Checker:
- Stay Up-to-Date: Implemented an automatic update checker that notifies server operators in-game when a new version of mGiveaway is available on GitHub Releases.
- Easy Updates: Provides a direct download link to the latest release for easy plugin updates.
📈 Improvements & Enhancements
- Robust Configuration Loading:
- Improved config loading and update mechanism (
ConfigUtil.updateConfig()
) to automatically add new configuration options with default values when updating from older plugin versions, ensuring smoother upgrades. - Enhanced configuration file structure with logical sections for messages and Discord command settings for better organization.
- Improved config loading and update mechanism (
🛠️ Technical Changes
- Refactored Configuration Structure:
- Significantly restructured
config.yml
to includemessages
anddiscord_command
sections, centralizing all configurable text elements.
- Significantly restructured
📝 Important Notes
- Configuration Reset (Recommended): Due to significant changes in
config.yml
structure, it is highly recommended to delete your oldconfig.yml
file and allow the plugin to generate a freshconfig.yml
with all the new configurable messages and sections. This will ensure you have all the new configuration options available. You can then re-enter your previous settings and customize the new messages as desired. - Translation Ready: mGiveaway v0.5 is now significantly easier to translate to other languages. Server owners can translate all user-facing text directly within the
config.yml
file. - Performance Considerations: While asynchronous player lookups improve responsiveness, be mindful of excessive giveaway creation and entry frequency, as Mojang API rate limits may still apply under extreme load.
mGiveaway v0.4 Changelog
This update focuses on adding essential administrative features and improving plugin robustness.
✨ Features
/mgwreload
Command:- Server administrators can now use the
/mgwreload
command (permission:mgiveaway.reload
) to gracefully reload the plugin in-game. - This command allows reloading the plugin's configuration, Discord bot connection, and giveaway tasks without requiring a full server restart.
- Useful for applying configuration changes, especially for Discord bot settings and giveaway definitions, without server downtime.
- Server administrators can now use the
🐛 Bug Fixes and Improvements
-
Improved Plugin Robustness:
- Implemented better null checks throughout the plugin to prevent potential
NullPointerException
errors and improve overall stability. - Enhanced error handling, particularly in areas involving Discord API interactions, Vault, PlaceholderAPI, configuration loading, and database operations.
- Plugin now pauses giveaway processing and logs severe errors to console if critical issues are detected (e.g., database connection failure, missing required config values). Users are prompted to reload the plugin to attempt recovery.
- Addressed potential issues where plugin might not function correctly after configuration changes, especially related to Discord bot settings.
- Implemented better null checks throughout the plugin to prevent potential
-
Enhanced Configuration Handling:
- Improved handling of missing or invalid configuration values during plugin startup and reload.
- Replaced reliance on "XXX" placeholder default values with more robust null handling and warnings for unset critical configuration options.
🛠️ Technical Changes
- Lowered
api-version
inplugin.yml
to1.13
:- Set
api-version: '1.13'
inplugin.yml
to allow the plugin to be loadable on a wider range of Paper and potentially Spigot servers (API version compatibility). - Note: While
api-version
is lowered for load compatibility, the plugin is still designed and tested primarily for Paper servers running Minecraft 1.17 and higher. Functionality on significantly older versions is not guaranteed.
- Set
- Compiled with Java 17 JDK:
- Plugin is now compiled using Java 17 JDK to ensure compatibility with Java 17 and newer Java Runtime Environments, which are common for modern Minecraft servers (including Paper 1.17+).
- Addressed
UnsupportedClassVersionError
issues encountered when running plugins compiled with newer JDKs on older server versions.
📝 Important Notes
- Paper Server Recommendation: mGiveaway continues to be designed and optimized for Paper servers (1.17+). While
api-version
has been lowered for wider load compatibility, best performance and full feature functionality are only guaranteed on Paper servers version 1.17 or higher. - Configuration Reload: Use the
/mgwreload
command after making changes toconfig.yml
to ensure all settings are properly reloaded and applied.