COWMODSКаталог модов

CustomCommand

lightweight · modern · brigadier trees · javascript execution · supports datapacks

Автор: Ontey7531обновлён 14 окт. 2026 г.
УправлениеТехнологииУтилиты

Описание

CustomCommand v2

A custom command creation plugin using brigadier.

ghpages modrinth-gallery discord-singular bstats
paper purpur spigot bungeecord

1.21-26.2 · Bedrock compatible · Datapack compatible · Javascript execution · No AI Code* · Automatic Updater

Early stages of development

v2 is currently under development. I'm not on alpha/beta builds anymore, but there are still many features to add and features to change. When finished, it will feature:

  • ✅ basic command features like description, permission, disabling and console only.
  • ✅ preset argument types
  • ✅ custom suggestions, requirements and execution
  • ✅ a plugin reload command
  • ✅ more execution types like TEXT or even
  • calling URLs easily
  • ✅ cooldowns
  • ✅ commands usable in datapacks (functions)
  • utils like clickable items/signs to execute commands

Reloadability

There is a reload command. Just type /ccmd reload and check the console for errors. This method uses NMS (minecarft's internals) which may change in every update. So if the command doesn't work for you, restart instead.

I don't plan to make this plugin reloadable using the /reload command. It uses paper's brigadier command registration, which is a lifecycle "event", which blocks reloading, so you will get an error message when trying to run the reload command.

Any plugins that promise to reload plugins on runtime will not work; either throw an exception, crash the server or do nothing.

Compatibility

Minecraft Versions

The latest major version and its minor versions will always be supported, e.g. 26 and its minor versions like 26.1 and 26.1.2. I will not try to keep a wide compatibility range.

Bedrock Support (GeyserMC)

Commands created by CustomCommand work like any other command on bedrock. Suggestions are not shown for bedrock players as the bedrock chat doesn't support them. I will consider adding a work-around with suggestions in the actionbar or the chat (or both).

Folia Support

Folia is supported

Velocity Support

Not yet, but it is a priority.

Fabric (Server)

Not yet, I'd love to tho.

Fabric (Client)

Not yet. I can imagine that I will make it as soon as the plugin has all features I want to add.

*: AI Usage?

  • ❌ Vibecoding/Agentic Engineering (fully AI generated files or parts of the project)
  • ✅ Debugging
  • ❌ Generating text (description, example commands, tutorials)
  • ✅ Generating long Markdown tables
  • ❌ Correcting my grammar

Statistics

My test servers are not included.

bStats Servers bStats Players

Галерея

Simple Command with suggestionsYAML for the simple command

Последние версии

Все версии →
release

CustomCommand 2.4.4

2.4.4
14 окт. 2026 г.77Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Скачать
Что нового
Changes - Fixed a bug where the update checker caused exponential duplication of tasks. This eventually caused hangar to reject the requests, spamming console and sadly also files with exception stack traces. I didn't notice this change for a few weeks as my testing sessions are usually not long. I am truly sorry for anyone who had to delete hundred of thousands of files.
release

CustomCommand 2.4.3

2.4.3
12 окт. 2026 г.14Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Скачать
Что нового
Changes - Added a permission for `/ccmd version` (and therefore `/ccmd`). Now, not everyone can see the version. - Changed `/ccmd help` to only show command (sections) the sender has permission to use. - `/ccmd update` - Renamed `/ccmd update force` to `download` - Added subcommand `info` which sends the version and changelog in chat.
release

CustomCommand 2.4.2

2.4.2
4 окт. 2026 г.62Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Скачать
Что нового
Changes - Added `cooldowns.yml` to store cooldowns on restarts. You can manipulate the data inside when the server is not running. All changes will be overridden when the server stops/restarts - Made cooldowns applicable for the console and command blocks - Intoduced a bug where sometimes when the plugin is on the server, command blocks' "last output" just doesn't work anymore. Idk what to do about it, really. - Added `cooldown-message` field in command (sections) to specify the cooldown message. Use `<cooldown>` for the remaining time. Only the first occurrence is replaced, so `<cooldown> <cooldown>` will result in e.g. `10s <cooldown>`. - Added `/ccmd cooldownless run <custom-command>`, which runs the specified command, ignoring the cooldown. The old cooldown persists after. - Made `/ccmd` more permission-driven. The command is now visible by default and `/ccmd help` can be run by anyone Every subcommand (except `version` currently) has a permission `<base-permission>.<node-name>`, e.g. `ccmd.command.custom-command.update` - Check updates every 5min if no new one was found. This is, because a substantial part of servers are not on the latest version and I assume they don't restart often, therefore not calling the updater. - Fixed a bug where the duration format would not accept formats with spaces
release

CustomCommand 2.4.1

2.4.1
13 сент. 2026 г.83Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Скачать
Что нового
Changes: - Added cooldowns. These can be specified in the base of the command (section). When a command is on cooldown, only that specific node is on cooldown. In this example, if you run `/cooldown`, you can't run it again for 10s. But you can still run `/cooldown 5s` even if `/cooldown` is on cooldown. I will add functionality that makes command sections require the root to not be on cooldown later. ```yaml cooldown: description: 'A command with cooldown' permission: 'ccmd.command.cooldown' cooldown: 10s executes: type: message message: message: 'Hello World!' literal:5s: description: 'Only 5s cooldown!' permission: 'ccmd.command.cooldown.5s' cooldown: 5s executes: type: message message: message: 'Cheap Hello World!' ``` - `/ccmd commands with` now accepts `cooldown` - `/ccmd command` now outputs the command's cooldown
release

CustomCommand 2.4

2.4
6 сент. 2026 г.32Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Скачать
Что нового
[Coming from 2.3.1?](https://github.com/Ontey6/CustomCommand/wiki/From-v2.3.1-to-v2.4) Changes - Code & API Changes - Moved away from enums. Now using interfaces (`Foo`), registries (`FooRegistry`), creators (`FooCreator`), parsing factories (`Foos`) - converted `CommandComponentType` - converted `ExecutionType` - converted `RequirementType` - converted `SuggestionType` - Made `CustomCommand` and `CommandSection` records. Both now implement `CommandSectionLike` with methods for name, children, command component and values. They also no longer have `parent` and `root` fields as you can not have those and children on an immutable object. - Added a plugin command (`/customcommand` or `/ccmd`) - Subcommand `command` gives you the values (permission, description, aliases...) of the command (section) specified after. - Subcommands `commands` sends a list of all commands with values into chat. - Subcommand `with` only shows the value entries (permission, description, aliases) specified after for each command. - Subcommand `help` sends the description of the command (section) specified after. - Subcommand `reload` Rebuilds all commands, registers them using NMS and sends command update packets to all players. - Subcommand `update` If there is a new update, downloads it after confirmation. It will be applied on the next restart. - All executions except for `javascript` and `javascript_reference` are now wrapped in a section like this to more easily support multi-typing in the future: ```yaml executes: type: message message: message: '<green>Hello, World!' broadcast: true executes: type: boss_bar boss-bar: name: 'Custom boss bar' progress: 1.0 color: yellow stay-ticks: 100 # 5s ``` - Arguments now start with either `literal` or `argument` instead of `then` v2.3.1: ```yaml then:my-argument: type: LITERAL # or then:my-argument: type: ARGUMENT argument: type: INTEGER ``` vs. now: ```yaml literal:my-argument: # or argument:my-argument: type: integer ``` - When one command can't be parsed, now skips only that command instead of the entire file - Made Javascript not spam the console - Added Javascript variables: - `console` - the console - `args` - A utility object for getting arguments - `get("name")` gets the argument with the name. Resolves `ArgumentResolver`s, so it will return a `Player` instead of a `PlayerSelectorArgumentResolver` for an argument type of `player`. - `resolveAngle("name")` resolves an angle argument. `get("name")` already does this. - `resolveAngle("name", source)` allows you to specify a custom source to resolve the angle with - `resolve("name")` resolves the argument. `get("name")` already does this. - `resolve("name", source)` allows you to specify a custom source - `isExecutorEntity` - If the executor is an entity. If false, it is a console - `isExecutorConsole` - If the executor is a console. `executor` is unusable (`null`) if this is true. Use sender in that case. - `suggestions` Utility object for creating suggestion entries (only in suggestions) - `string("suggestion")` - A string suggestion - `string("suggestion", "tooltip")` - A string suggestion with tooltip (hover text) - `integer("suggestion")` - An integer suggestion - `integer("suggestion", "tooltip")` - An integer suggestion with tooltip (hover text) - Fixed `javascript_reference` - Updated examples - Renamed `commands` execution type to `command`
release

CustomCommand 2.3.1

2.3.1
11 авг. 2026 г.56Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Скачать
Что нового
Actually fixed the version being 'auto-filled'
release

CustomCommand 2.3

2.3
11 авг. 2026 г.10Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Скачать
Что нового
Sorry for the delay, I had to update OnteyAPI. Changes: - Added bstats support - Added Updater - Added PlaceholderAPI and MiniPlaceholders support - Changed parse exceptions to have context (Comamnd name, argument and section the exception occurred in) - Added feedback that the root can't be set an ARGUMENT - Changed argument declaration: before, you would have a type (PRESET/CUSTOM) and preset (STRING, INTEGER...). now you only have type (STRING, INTEGER, CUSTOM...). - Added many more execution types: COMMANDS, MESSAGE, BROADCAST, TITLE, BROADCAST_TITLE, ACTIONBAR, BROADCAST_ACTIONBAR, BOSS_BAR, BROADCAST_BOSS_BAR - Made JAVA_REFERENCE types work (Added everywhere JAVASCRIPT can be specified). - Updated examples
alpha

CustomCommand 2.2-alpha

2.2-alpha
5 авг. 2026 г.20Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Скачать
Что нового
Changes - Fixed the plugin version being called 'auto-filled' - Commands are now registered during the bootstrap phase. This makes them able to be used in functions in data packs. - Added GraalJS as a library that is downloaded by the server. - Added javascript execution - Added requirements - Added javascript suggestions - Updated examples
alpha

CustomCommand 2.1-alpha

2.1-alpha
4 авг. 2026 г.9Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Скачать
Что нового
Changes - Added more preset argument types (All vanilla types from `ArgumentTypes` except for `RESOURCE` and `RESOURCE_KEY` as they require a whole system to fetch registries from Strings) - Added the `dynamic` to the suggestion declaration. When set to true, removes all suggestions that don't start with the player's input - Added executes/execution declaration. Doesn't have any **actual** features yet. But: Marks that when this argument is specified last, the command is complete. When no executes declaration is present, it is assumed that the command can't end on this argument, and an error is shown when executing the command - Improved examples Code comparison: https://github.com/Ontey6/CustomCommand/compare/2.0-alpha...2.1-alpha
alpha

CustomCommand 2.0

2.0-alpha
4 авг. 2026 г.14Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Скачать
Что нового
Version 2.0 is NOT FINISHED. At the moment, the features are just: creating brigadier trees with a few preset arguments and custom suggestions. The wiki will follow.