Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
MobBag is a lightweight Minecraft plugin that lets players capture animals and villagers into portable bags and release them anywhere, with all their data preserved. It’s designed for survival, roleplay, and SMP servers that want a more immersive, balanced way to transport mobs without minecarts or boats.
Players can capture mobs with a right-click, carry them around safely, and release them later — while the plugin preserves key attributes like health, names, and villager professions.
Everything is fully configurable with a simple lang.yml
, and the plugin is optimised to run smoothly on modern Paper servers.
🔍 Key Features
🎒 Capture & release system using portable Mob Bags
📦 Full NBT preservation (health, names, age, villager professions, levels)
📝 Bag lore shows stored mob details
🛠 Customizable messages via lang.yml
with prefix support
⚡ Lightweight, standalone — no extra dependencies required
✅ Easy to use: /mobbag give <player>
command for admins
📦 Requirements
Minecraft 1.21.4+ (Paper or compatible fork recommended)
No external dependencies
Place MobBag.jar
into your /plugins
folder.
Restart the server.
Open plugins/MobBag/lang.yml
:
Customise the prefix
to fit your server’s branding.
Adjust player-facing messages as needed.
Restart the server to apply changes to lang.yml
.
Test the plugin in-game:
Run /mobbag give <player>
with the permission mobbag.give
→ Empty bag received?
Right-click an animal or villager with an empty Mob Bag → Captured?
Try releasing the mob onto a block → Released with correct data?
/report <player> <reason>
dispatchdesk.report
Report a player to staff
/bugreport <description>
dispatchdesk.bugreport
Report a bug to staff or dev team
/suggest <description>
dispatchdesk.suggest
Submit a suggestion to the server team
/helpop <description>
dispatchdesk.helpop
Request in-game help from staff
/dispatchdesk reload
dispatchdesk.admin
Reloads the plugin configuration
dispatchdesk.report
Use /report
command
dispatchdesk.report.receive
Receive staff alerts for /report
dispatchdesk.bugreport
Use /bugreport
command
dispatchdesk.bugreport.receive
Receive staff alerts for /bugreport
dispatchdesk.suggest
Use /suggest
command
dispatchdesk.suggest.receive
Receive staff alerts for /suggest
dispatchdesk.helpop
Use /helpop
command
dispatchdesk.helpop.receive
Receive staff alerts for /helpop
dispatchdesk.admin
Allows the use of /dispatchdesk reload
dispatchdesk.*
Grants all DispatchDesk permissions
Place DispatchDesk.jar
into your /plugins
folder.
Restart the server.
Open config.yml
:
Set enabled: true
for modules you want
Add one or more webhook entries under each module
Optionally define a thread_id
for thread posting
Restart the server or run /dispatchdesk reload
Test each module:
Embed sent to Discord?
Staff notified in-game?
Player sees confirmation?
All messages can be changed in the lang.yml
file. Color codes using &
are supported.
prefix
&6[MobBag]&r
Prefix added to the start of all messages.
already-full
&cYou already have a mob captured in this Mob Bag.
Sent when a player tries to capture a mob while their bag is already full.
capture-invalid
&cYou can only capture animals and villagers.
Sent when a player tries to capture an unsupported entity.
capture-success
&aCaptured a %mob%
Sent when a mob is successfully captured. %mob%
is replaced with the mob type/name.
corrupted-bag
&cThis Mob Bag is corrupted.
Sent when a stored bag has missing or invalid NBT data.
release-success
&eReleased a %mob%
Sent when a mob is successfully released. %mob%
is replaced with the mob type/name.
release-failed
&cFailed to release mob.
Sent if the release process fails unexpectedly.
given
&aGave an empty Mob Bag to %player%
Sent to the command sender when they give a bag. %player%
is replaced with the player’s name.
player-not-found
&cPlayer not found.
Sent when /mobbag give <player>
is used with an invalid/offline name.
usage
&eUsage: /mobbag give <player>
Sent when /mobbag
is used incorrectly.
no-permission
&cYou don’t have permission to use this command.
Sent when a player tries to run a command without the required permission.
DispatchDesk is a modern, modular Minecraft-to-Discord reporting system. It allows players to send rich, embedded reports, bug notices, suggestions, and help requests straight from the game into Discord — keeping your staff informed and your community supported.
Built for performance and flexibility, DispatchDesk supports multiple webhooks per module, optional Discord thread delivery, and full in-game feedback for both staff and players. Everything is configurable, from embed structure to permissions, and it's fully compatible with proxy setups (Velocity & BungeeCord).
Whether you're running a survival SMP, a mini-game network, or a community server, DispatchDesk makes staff communication seamless, actionable, and professional.
🧩 Modular design – enable/disable any module: report
, bugreport
, suggest
, helpop
📬 Discord embed delivery via webhook(s)
🧵 Supports thread_id for Discord thread posting
🔁 Multi-webhook support per module (e.g., report to multiple channels)
🧠 Placeholder system: %player%
, %uuid%
, %reason%
, %server%
, and more
📢 In-game alerts to staff based on permissions
✅ Confirmation messages sent to players
🌐 Proxy support (%server%) for Velocity & Bungee setups
⚙️ Fully configurable via config.yml
Minecraft 1.21.5+ (Paper or compatible fork recommended)
May work on earlier versions back to 1.21, support not guaranteed
No dependencies required
Optional:
ProtocolLib for improved %client_version%
accuracy
All settings can be changed in the config.yml
file.
Each module (report
, bugreport
, suggest
, helpop
) can be enabled/disabled individually.
proxy
section)If you’re running your server behind a proxy (Velocity or BungeeCord), DispatchDesk can optionally track the player’s proxy server name and make it available via the %server%
placeholder.
You’ll find this section at the top of your config.yml
:
proxy:
fallback-server-name: "Main"
warn-if-no-proxy: true
Config Options:
fallback-server-name
The default name used for %server%
if the plugin cannot detect the server
warn-if-no-proxy
Logs a warning if a player runs a command and no proxy name is available
Note: To resolve the
%server%
placeholder dynamically, you must:
Be using Velocity or BungeeCord
Ensure plugin messaging is enabled (DispatchDesk uses it to get server info)
If you’re running on a standalone Paper server, the %server%
placeholder will default to the fallback-server-name
value.
report
Players report another player for bad behavior
bugreport
Players report bugs or technical issues
suggest
Players submit ideas or suggestions
helpop
Players ask staff for help
Each module supports the following keys:
enabled
Enables or disables the module entirely
webhooks
One or more Discord webhooks to send messages to
➤ Each webhook can include an optional thread_id
➤ Supports posting to multiple channels or threads per module
permission
Permission required for staff to receive alerts for this module
embed
Controls how the message appears on Discord as a rich embed
embed.title
Embed title (supports placeholders)
embed.description
Embed main body text (supports placeholders)
embed.color
Embed border color in HEX (e.g., #e74c3c
)
embed.fields
A list of name/value/inline objects displayed below the description
message_to_staff
In-game message shown to staff with the correct permission
message_to_player
In-game confirmation sent to the player who ran the command
Placeholders are dynamic tags like %player%
, %reason%
, or %server%
that get replaced with real data from the player who used the command.
You can use them in:
Discord embed titles, descriptions, and fields
In-game staff messages
Confirmation messages sent to players
Each placeholder is replaced automatically when the message is sent.
👉 View full placeholder list here
embed.fields
?The fields
section defines structured rows of data shown beneath the embed description in Discord.
Each field must contain:
name
: The field title (e.g., "Reason"
)
value
: The content of the field (supports placeholders)
inline
: true
or false
true
: Shows fields side-by-side (max 3 per row)
false
: Makes the field span the full embed width
You can define up to 25 fields per embed.
Example
embed:
title: "New Report Submitted"
description: "%player% has reported %target% for: %reason%"
color: "#ff5555"
fields:
- name: "Reported Player"
value: "%target%"
inline: true
- name: "Reason"
value: "%reason%"
inline: true
- name: "Location"
value: "%world% (%x%, %y%, %z%)"
inline: false
This will render in Discord like:
New Report Submitted
[embed border color: red]
Reported Player | Reason
Steve | Hacking
Location
world_nether (123, 65, -12)
You can define multiple webhooks per module, each with a separate thread ID if desired.
webhooks:
webhook1:
url: "https://discord.com/api/webhooks/..."
thread_id: ""
webhook2:
url: "https://discord.com/api/webhooks/..."
thread_id: "123456789012345678"
webhook1
will post to the base channel.
webhook2
will post to a specific thread.
This allows you to send alerts to multiple destinations for each action.
Placeholders can be used in:
embed.title
embed.description
embed.fields.name
embed.fields.value
message_to_staff
message_to_player
%player%
Notch
Player’s name
%uuid%
f84c6a79-...
Player UUID
%world%
world_nether
Current world
%x%
%y%
%z%
123
64
-45
Coordinates
%client_version%
1.21.1
/ forge
May return mod loader name on modded clients. Use Paper or ProtocolLib for numeric accuracy.
%ip%
192.168.1.10
Player’s IP address
%ping%
45
Ping in milliseconds
%gamemode%
SURVIVAL
Player’s gamemode
%server%
Survival-01
Server name (proxy-aware)
%reason%
Hacking
Reason in /report
%target%
Steve
Targeted player in /report
%description%
Glitch in chest
Description for /bugreport
, /suggest
, /helpop