Skip to content

Enshrouded 1.0 is out! 🎉 Get 25% OFF your next Enshrouded Server today!

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.

Updated 4 min read

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: false

Click 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: true and restart.
  • Players see a permission error. Grant mycommand.cmd.<entry name> or set permission-required: false.
  • The file will not load. See How to find and fix YAML and JSON config errors.

Was this guide helpful?

Still stuck?

Talk to a real person, we answer fast.

  • Open a ticket

    Paste the exact error and name your server, so we can look at it from our side.

  • Ask on Discord

    Chat with the team and other server owners.

  • Browse the Help Centre

    Versions, mods, plugins, backups and RAM sizing, all in plain English.

Ready to launch your Minecraft server?

Aussie hardware, NVMe disks and DDoS protection, with the version and mod loader yours to change whenever you like.