
✨ mGiveaway | DISCORD ➱ MINECRAFT GIVEAWAYS
mGiveaway is a plugin that allows you to create and manage Discord giveaways from Minecraft. It then automatically rewards the winners in-game. Uses slash commands for easy giveaway creation and button/modal interactions for user-friendly entry.
Tags
Creators
Details
v0.5
Compatibility
Changes
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.ymlfile. - 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_embedsection 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
OfflinePlayerdata 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.ymlto includemessagesanddiscord_commandsections, centralizing all configurable text elements.
- Significantly restructured
📝 Important Notes
- Configuration Reset (Recommended): Due to significant changes in
config.ymlstructure, it is highly recommended to delete your oldconfig.ymlfile and allow the plugin to generate a freshconfig.ymlwith 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.ymlfile. - 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.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:2OjhrCrw:vsRgYleZ"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:2OjhrCrw:vsRgYleZ"
}
