CustomCommand
2.4.4lightweight · modern · brigadier trees · javascript execution · supports datapacks
2.4.4latestCustomCommand 2.4.4last week 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.2.4.3CustomCommand 2.4.32 weeks ago Changes - Added a permission for/ccmd version(and therefore/ccmd). Now, not everyone can see the version. - Changed/ccmd helpto only show command (sections) the sender has permission to use. -/ccmd update- Renamed/ccmd update forcetodownload- Added subcommandinfowhich sends the version and changelog in chat.2.4.2CustomCommand 2.4.23 weeks ago Changes - Addedcooldowns.ymlto 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. - Addedcooldown-messagefield 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/ccmdmore permission-driven. The command is now visible by default and/ccmd helpcan be run by anyone Every subcommand (exceptversioncurrently) 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 spaces2.4.1CustomCommand 2.4.1Sep 13, 2026 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 5seven if/cooldownis on cooldown. I will add functionality that makes command sections require the root to not be on cooldown later.
-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 withnow acceptscooldown-/ccmd commandnow outputs the command's cooldown2.4CustomCommand 2.4Sep 6, 2026 [Coming from 2.3.1?](https://github.com/Ontey6/CustomCommand/wiki/From-v2.3.1-… Changes - Code & API Changes - Moved away from enums. Now using interfaces (Foo), registries (FooRegistry), creators (FooCreator), parsing factories (Foos) - convertedCommandComponentType- convertedExecutionType- convertedRequirementType- convertedSuggestionType- MadeCustomCommandandCommandSectionrecords. Both now implementCommandSectionLikewith methods for name, children, command component and values. They also no longer haveparentandrootfields as you can not have those and children on an immutable object. - Added a plugin command (/customcommandor/ccmd) - Subcommandcommandgives you the values (permission, description, aliases...) of the command (section) specified after. - Subcommandscommandssends a list of all commands with values into chat. - Subcommandwithonly shows the value entries (permission, description, aliases) specified after for each command. - Subcommandhelpsends the description of the command (section) specified after. - SubcommandreloadRebuilds all commands, registers them using NMS and sends command update packets to all players. - SubcommandupdateIf there is a new update, downloads it after confirmation. It will be applied on the next restart. - All executions except forjavascriptandjavascript_referenceare now wrapped in a section like this to more easily support multi-typing in the future:
- Arguments now start with eitherexecutes: 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 # 5sliteralorargumentinstead ofthenv2.3.1:
vs. now:then:my-argument: type: LITERAL # or then:my-argument: type: ARGUMENT 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: -literal:my-argument: # or argument:my-argument: type: integerconsole- the console -args- A utility object for getting arguments -get("name")gets the argument with the name. ResolvesArgumentResolvers, so it will return aPlayerinstead of aPlayerSelectorArgumentResolverfor an argument type ofplayer. -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.executoris unusable (null) if this is true. Use sender in that case. -suggestionsUtility 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) - Fixedjavascript_reference- Updated examples - Renamedcommandsexecution type tocommand2.3.1CustomCommand 2.3.1Aug 11, 2026 Actually fixed the version being 'auto-filled'2.3CustomCommand 2.3Aug 11, 2026 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 examples2.2-alphaCustomCommand 2.2-alphaAug 5, 2026 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 examples2.1-alphaCustomCommand 2.1-alphaAug 4, 2026 Changes - Added more preset argument types (All vanilla types fromArgumentTypesexcept forRESOURCEandRESOURCE_KEYas they require a whole system to fetch registries from Strings) - Added thedynamicto 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.0-alphaCustomCommand 2.0Aug 4, 2026 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.0.5.1CCMD 0.5.1Oct 1, 2025 Version 0.5.1
now broadcasts updater message to OP's on join - add toggle! fixed escaping of advanced colors made legacy colors escapable with \\&e too rather than just &&e added mini-message abbreviations allow spaces in <r,g,b>: <_r,_g,\_b\_> (underscores are possible spaces)0.5CCMD 0.5Sep 28, 2025 Version 0.5
added command field on commands to set the name of the command made advanced broadcast replace args properly fixed usage and description added preconditions (command conditions) and corresponding error messages added Url-Calls made macro Strings properly remove colon in front of the false output no replace placeholder mow also works in messages changed placeholder no replace to no-replace and actionholder send to to send-to added ! (not) operator to conditions temporarily removed actionholders because they were causing problems made tab completer better by only showing tab results that start with the user input also added static placeholder in tab to make them stay no matter what and finally added the ability to make it players to make a list of all online players appear made conditions placeholders instead of actionholder actionholder-format is now unused added mini-message, &# and <r,g,b> format support for messages added boolean type to args added signature 'any' to String args typeChanges after using the plugin myself:
added player, server-player and offline-player type to args added ability to disable updater added placeholders: label, usage, description, permission, name, command and condition-error added Argument Tab dropped spigot support added color ends like in mini-message: &/e, &/#hex, </0,0,0>0.4CCMD 0.4Sep 13, 2025 Also allow files with the file ending '.yaml' instead of just '.yml' reworked Actionholders code and added: _reload-config, reload-commands, reload-command ("<!reload-command>command-name")_ Added support for placeholders and Strings in general in abc range made abc permission a Field removed wrongfully allowed access to actionholders in messages added Macro Strings that make life easier. made placeholders escapable with a backslash added customizable placeholder names added placeholder support for range0.3CCMD 0.3Sep 5, 2025 added new namespace key on commands added or operator ( || ) to conditions also added &&, but in different ways for abc and commands abc: simply made 'condition' a Field commands: after a conditional line, just add another one added default tab completion (no tab)0.2CCMD 0.2Sep 3, 2025 _changed config key format.command-prefix to format.namespace_ adjusted description Changed advanced broadcast's field messages to broadcast to match change from v0.02(version not available) in examples.yml added new permission-required field in commands added simple tab completer. updated examples.yml switched placeholders around (now also on the wiki) and removed 'degrees', 'tab' and 'circumflex' placeholders because of redundancy added customizable paths Added logging when disabling plugin because the plugin is unable to create the commands directory embedded conditions into commands via actionholder made actionholders work without throwing a NullPointerException by simply not returning null... added an updater0.1CCMD 0.1 Patch 01Aug 30, 2025 Patched a wrong name in the examples.yml commands file
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta