Set up MyCommand on Minecraft
Install MyCommand on Paper or Purpur, write custom text and shortcut commands in YAML, register them for tab-complete and set permissions.
MyCommand lets you build your own commands from a config file. A command can print a message, broadcast one, act as a shortcut for another command, run several commands in a row, charge money, and more. It runs only on the server, so players install nothing.
Checked against MyCommand 5.7.5, the newest file on its Bukkit page from February 2025, and 5.7.4 on SpigotMC, which lists Minecraft up to 26.1, October 2026.
What you need
- A Paper or Purpur server, which shows a Plugins tab under Content in the panel menu.
- Nothing else. Vault and PlaceholderAPI are optional. Vault only matters if you charge money in a command, and Set up PlaceholderAPI on your Minecraft server covers the other.
Install MyCommand
MyCommand is not on Modrinth or Hangar, so the usual Modrinth search finds nothing. There are two routes.
By upload. Download the jar from the SpigotMC page or the Bukkit page on your computer. Open File Manager, go into plugins, click Upload and choose the jar.
From the store. Open the Plugins tab, choose the CurseForge chip in the source chip row at the top of the tab, search for MyCommand and click Install. CurseForge carries it as a Bukkit plugin, and the newest file there is 5.7.5. The store installs a CurseForge file only when the author allows third-party downloads, and otherwise lists it with a link, so if MyCommand shows a link instead of Install, use the upload route above. That file is tagged for Minecraft 1.21.4 and 13 other versions on the Bukkit file list, so a server on a newer version may find no matching file.
Then open Console and click Restart. The server needs a restart before a new plugin loads. If MyCommand does not load, its page says to update or remove ProtocolLib.
Write your first command
MyCommand keeps its commands in YAML files in a commands folder inside plugins/MyCommand. The jar creates an examples.yml there on first start, and any number of files can sit beside it. Open examples.yml, or a file of your own, in File Manager and add this at the bottom:
'welcome':
command: /welcome
type: TEXT
text:
- '&2Hello &a$player!'
- '&6Welcome to &e$server-name&6!'
permission-required: falseClick Save, then run mycmd-reload in the Console. In game, /welcome now prints the two lines. $player becomes the player's name. type: BROADCAST_TEXT sends the text to everyone online instead.
Put each text line inside quotes. The documentation recommends it to prevent parsing errors.
Make a shortcut
A RUN_COMMAND command runs other commands, and $arg1 is replaced by what the player typed after the command:
'buypack':
command: /buypack
type: RUN_COMMAND
runcmd:
- "/say $arg1 just bought the starter pack!"Typing /buypack Steve then runs /say Steve just bought the starter pack!. For a plain alias, a RUN_COMMAND with a single line does the job.
Two more fields help. required_args: 2 stops the command unless the player typed at least two arguments. error-message sets what a player sees when they type it wrong.
Show the command in tab-complete
A custom command shows red in chat and has no tab-complete until it is registered. Add register: true to it. Registered commands need a full server restart to take effect at 100%, so click Restart in the Console after adding the line. To register every command by default, set AUTO_REGISTER to true under COMMANDS in config.yml, where it starts as false.
Permissions
By default each custom command needs a permission named mycommand.cmd. followed by the name of its entry, the quoted word at the start of the block. The 'buypack': entry above needs mycommand.cmd.buypack, whatever its command: line says. That naming is the default, set by USE_NAME_INSTEAD_OF_ID_IN_THE_PERMISSION_NAME under DEBUG in config.yml. mycommand.cmd.all allows every custom command. Set permission-required: false on a command to skip the check for it. If you have no permissions plugin, set DISABLE_PERMISSIONS to true under DEBUG in config.yml. It skips the mycommand.cmd check for custom commands. See Set up LuckPerms on your Minecraft server for assigning them.
The built-in commands are mycmd for the list, mycmd-reload (permission mycommand.reload) and mycmd-edit for an in-game config editor (mycommand.edit). mycmd list shows every custom command you have made.
Common problems
- A command shows as unknown. Add
register: trueand restart. - Players see a permission error. Grant
mycommand.cmd.<entry name>or setpermission-required: false. - The file will not load. See How to find and fix YAML and JSON config errors.
Was this guide helpful?
Related guides
Set up EssentialsX on your Minecraft server
Install EssentialsX on Paper or Purpur, add its modules, let players use homes and teleport commands, and tune the main config file.
Get modpack features with Paper plugins
Match common modpack features such as claims, quests and vein mining to Paper plugins that need no client mods, and see what has no plugin equivalent.
Protect your builds with GriefPrevention
Install GriefPrevention so players claim land with a golden shovel, share it with /trust and stop griefing without admin work.
