Boost your server community with exciting giveaways!
mGiveaway seamlessly integrates Discord and Minecraft,
allowing you to create engaging giveaways, set custom rewards,
and automatically deliver prizes to winners in-game.
mGiveaway - Discord Minecraft Giveaway Plugin
- Discord Integration: Slash commands for easy giveaway creation & management in Discord.
- Automated Giveaways: Schedule start/end times for fully automated giveaways.
- Configurable Requirements: Permissions, Groups/Roles (Vault), PlaceholderAPI values.
- In-Game Rewards: Automatic execution of commands for winners.
- Customizable Embeds: JSON configuration for rich Discord embed messages.
- Dynamic Placeholders: Embeds update with time left, entries, winners, etc.
- Giveaway Reminders: In-game broadcasts to notify players.
- Statistics Tracking: Track entries and wins.
- Extensive Text Config: config.yml for messages, UI text, etc.
- Update Checker: In-game notifications for new versions.
- Spigot: 1.17+ [Paper recommended]
- PlaceholderAPI: 2.11.6+
- Vault: 1.7+
- Download & Install: Get mGiveaway-VERSION.jar from GitHub Releases and place in /plugins folder.
- Restart your server
- Configure Discord Bot in config.yml:
- Create Bot at Discord Developer Portal.
- Get Bot Token ("Bot" tab).
- Paste Token into discord.bot.token in plugins/mGiveaway/config.yml
- Configure config.yml for:
- prefix: In-game prefix.
- broadcast_interval & broadcast_message: Giveaway reminders.
- discord.bot settings (token, status, activity, channels, etc.) - Token & giveaway_channel REQUIRED.
- discord.bot.command customization.
- discord.bot.giveaway_embed, giveaway_end_embed, log_embed: JSON Embed customization (use Discord Embed Builder).
- messages: All text messages.
- giveaways: Define giveaway settings & requirements.
- Reload Plugin: Use /mgwreload or restart server.
Use /create_giveaway (default) to create giveaways.
/create_giveaway name: prize: minecraft_prize: duration: winners: command: requirements:
- name: REQUIRED: Internal giveaway name.
- prize: REQUIRED: Formatted prize description (Discord).
- minecraft_prize: REQUIRED: Plain-text prize (in-game broadcast).
- duration: REQUIRED: Duration string (e.g., 2d 30m).
- winners: REQUIRED: Number of winners.
- command: REQUIRED: First reward command (%player% placeholder).
- requirements: OPTIONAL: true/false (if the giveaway start should wait for requirements)
⚙️ Configuring Giveaways (config.yml - giveaways section):
See the example giveaway configuration (giveaways.5Diamonds) in the config.yml for a template. Key configuration options for each giveaway defined under the giveaways section:
- settings: - Settings for the giveaway
- scheduled_start: (Optional) Date and time to automatically start the giveaway at a future time. Format: dd/MM/yyyy HH:mm:ss (24-hour format). If not set, the giveaway starts immediately (or when manually forced).
- end_time: REQUIRED: Date and time to automatically end the giveaway. Format: dd/MM/yyyy HH:mm:ss (24-hour format).
- winners: REQUIRED: The number of winners for this giveaway.
- commands: REQUIRED: Reward commands (%player%).
- prize_formatted: REQUIRED: Discord prize description.
- minecraft_prize: REQUIRED: In-game prize text.
- requirements: (Optional)
- group: Vault Group/Role.
- <group_name>: value: true/false, formatted.
- permission: Vault Permission.
- <permission_node>: value: true/false, formatted.
- placeholder: PlaceholderAPI value.
- <placeholder_name>: over: <number> or under: <number>, formatted.
For Giveaway and Giveaway End Embeds:
{TIME-LEFT}, {END-TIME}, {ENTRIES}, {WIN-COUNT}, {PRIZE}, {WINNERS}
For Log Embed:
{GIVEAWAY-NAME}, {ENTRIES-COUNT}, {PRIZE}, {COMMANDS}, {WINNERS-MENTIONS}, {ENTRIES-LIST}
After making any changes to the config.yml file, remember to use /mgwreload in-game to reload the plugin.
Sometimes, the plugin pauses itself because of runtime errors. To restart it just reload it ;)
[](https://bstats.org/plugin/bukkit/mGiveaway/24362)* **PlaceholderAPI:** 2.11.6+
* **Vault:** 1.7+
1. **Download & Install:** Get `mGiveaway-VERSION.jar` from [GitHub Releases](https://github.com/m-surowiec/mGiveaway/releases/latest) and place in `/plugins` folder.
2. **Restart your server**
3. **Configure Discord Bot in `config.yml`:**
* Create Bot at [Discord Developer Portal](https://discord.com/developers/applications).
* Get Bot Token ("Bot" tab).
* Paste Token into `discord.bot.token` in `plugins/mGiveaway/config.yml`
4. **Configure `config.yml` for:**
* `prefix`: In-game prefix.
* `broadcast_interval` & `broadcast_message`: Giveaway reminders.
* `discord.bot` settings (token, status, activity, channels, etc.) - **Token & giveaway_channel REQUIRED**.
* `discord.bot.command` customization.
* `discord.bot.giveaway_embed`, `giveaway_end_embed`, `log_embed`: JSON Embed customization (use [Discord Embed Builder](https://glitchii.github.io/embedbuilder/)).
* `messages`: All text messages.
* `giveaways`: Define giveaway settings & requirements.
5. **Reload Plugin:** Use `/mgwreload` or restart server.
Use `/create_giveaway` (default) to create giveaways.
```/create_giveaway name: prize: minecraft_prize: duration: winners: command: requirements:```
* **name:** **REQUIRED:** Internal giveaway name.
* **prize:** **REQUIRED:** Formatted prize description (Discord).
* **minecraft_prize:** **REQUIRED:** Plain-text prize (in-game broadcast).
* **duration:** **REQUIRED:** Duration string (e.g., `2d 30m`).
* **winners:** **REQUIRED:** Number of winners.
* **command:** **REQUIRED:** First reward command (`%player%` placeholder).
* **requirements:** **OPTIONAL:** `true`/`false` (if the giveaway start should wait for requirements)
### ⚙️ Configuring Giveaways (`config.yml` - `giveaways` section):
See the example giveaway configuration (`giveaways.5Diamonds`) in the `config.yml` for a template. Key configuration options for each giveaway defined under the `giveaways` section:
* **settings:** - Settings for the giveaway
* `scheduled_start`: (Optional) Date and time to automatically start the giveaway at a future time. Format: `dd/MM/yyyy HH:mm:ss` (24-hour format). If not set, the giveaway starts immediately (or when manually forced).
* `end_time`: **REQUIRED:** Date and time to automatically end the giveaway. Format: `dd/MM/yyyy HH:mm:ss` (24-hour format).
* `winners`: **REQUIRED:** The number of winners for this giveaway.
* `commands`: **REQUIRED:** Reward commands (`%player%`).
* `prize_formatted`: **REQUIRED:** Discord prize description.
* `minecraft_prize`: **REQUIRED:** In-game prize text.
* `requirements:` (Optional)
* `group`: Vault Group/Role.
* ``: `value: true/false`, `formatted`.
* `permission`: Vault Permission.
* ``: `value: true/false`, `formatted`.
* `placeholder`: PlaceholderAPI value.
* ``: `over: ` or `under: `, `formatted`.
#### For Giveaway and Giveaway End Embeds:
* `{TIME-LEFT}`, `{END-TIME}`, `{ENTRIES}`, `{WIN-COUNT}`,
`{PRIZE}`, `{WINNERS}`
#### For Log Embed:
* `{GIVEAWAY-NAME}`, `{ENTRIES-COUNT}`, `{PRIZE}`, `{COMMANDS}`,
`{WINNERS-MENTIONS}`, `{ENTRIES-LIST}`
* **Paper server is required. This plugin won't work on Spigot**
* After making any changes to the `config.yml` file, remember to use `/mgwreload` in-game to reload the plugin.
Sometimes, the plugin pauses itself because of runtime errors. To restart it just reload it ;)
[](https://bstats.org/plugin/bukkit/mGiveaway/24362)
* `discord.bot.activity`: Set the bot's activity type (e.g., `PLAYING`, `WATCHING`, `LISTENING`, `STREAMING`).
* `discord.bot.activity_text`: Set the text for the bot's activity.
* `discord.bot.activity_url`: Set the URL if using `STREAMING` activity.
* `discord.bot.giveaway_channel`: Enter the ID of the Discord text channel where giveaway embeds will be posted.
* `discord.bot.log_embed_channel`: Enter the ID of the Discord text channel for giveaway end logs.
* `discord.bot.log_embed_color`: Customize the color of the giveaway log embed.
* `discord.bot.command.name`: Customize the Discord slash command name (default: `create_giveaway`).
* `discord.bot.command.description`: Customize the Discord slash command description.
* `discord.bot.giveaway_embed`: Customize the JSON structure of the giveaway embed message. See example in `config.yml` and placeholders below. (use [this](https://glitchii.github.io/embedbuilder/) site for easier embed creation)
* `discord.bot.giveaway_end_embed`: Customize the JSON structure of the giveaway end embed message. See example and placeholders.
* `giveaways`: Configure your giveaways under this section. See example giveaway (`10KluczyPodniebnych`) in `config.yml` for details on setting up giveaway settings and requirements.
6. **Reload Plugin:**
* **Either use a plugin or restart your server**
* **Plugin example:** [PlugManX](https://www.spigotmc.org/resources/plugmanx.88135/)
**Slash Command Usage (Discord):**
Use the configured slash command (default: `/reate_giveaway`) in your Discord server to create a giveaway.
* `/create_giveaway name: prize: prize_placeholder: duration: winners: command: requirements:`
* `name`: The name of the giveaway (used internally, e.g., in config).
* `prize`: The formatted description of the prize to display in the Discord embed.
* `prize_placeholder`: A short placeholder for the prize used in in-game broadcast messages.
* `duration`: The giveaway duration (e.g., `1mo 2w 7d 5h 30m`). Units: `mo` (months), `w` (weeks), `d` (days), `h` (hours), `m` (minutes), `s` (seconds).
* `winners`: The number of winners for the giveaway.
* `command`: The first command to execute for each winner (use config for multiple commands). Placeholders: `%player%` (winner's Minecraft username).
* `requirements`: (Optional, `true` or `false`, defaults to `false`). Set to `true` if you want to manually add requirements to the giveaway in the `config.yml` *before* it starts. If `false`, the giveaway starts immediately after creation.
**Configuring Giveaways (`config.yml` - `giveaways` section):**
See the example giveaway configuration (`giveaways.5Diamonds`) in the `config.yml` for a template. Key configuration options for each giveaway:
* `settings.scheduled_start`: (Optional) Date and time to automatically start the giveaway (format: `dd/MM/yyyy HH:mm:ss`). If not set, the giveaway starts immediately (or when forced).
* `settings.end_time`: **REQUIRED:** Date and time to automatically end the giveaway (format: `dd/MM/yyyy HH:mm:ss`).
* `settings.winners`: **REQUIRED:** Number of winners.
* `settings.commands`: **REQUIRED:** List of commands to execute for each winner. Placeholders: `%player%`.
* `settings.prize_formatted`: **REQUIRED:** Formatted prize description for Discord embed.
* `settings.prize_placeholder`: **REQUIRED:** Short placeholder for prize in in-game broadcasts.
* `requirements`: (Optional) Define requirements for giveaway entry:
* `group`: Role/group based requirements (using Vault).
* `permission`: Permission-based requirements (using Vault).
* `placeholder`: PlaceholderAPI value-based requirements (numerical comparisons).
* See `config.yml` example for detailed syntax and options for defining requirements, including `value`, `formatted` (for display), `over`/`under` (for number placeholders).
**Embed JSON Placeholders (`discord.bot.giveaway_embed`, `discord.bot.giveaway_end_embed`):**
Use these placeholders in your embed JSON configurations to dynamically display giveaway information:
* `{TIME-LEFT}`: Time remaining until giveaway ends (Discord relative timestamp).
* `{END-TIME}`: End time of the giveaway (formatted date and time).
* `{ENTRIES}`: Number of current giveaway entries.
* `{WIN-COUNT}`: Number of winners.
* `{PRIZE}`: Formatted prize description.
* `{WINNERS}`: (Giveaway end embed only) List of winners (Discord mentions and usernames).