Have you ever wanted a custom command without the hassle of coding it yourself ? I've got the plugin for you !
xCommands is a fully featured plugin with everything you could ever need including JSON formatting, unlimited subcommands and so much more!
xCommands is fast, highly customizable, reliable and easy to use, which makes it perfect for any commands you need to add!
- Unlimited commands
- Infinite subcommands for every command
- 10 different conditions
- Tab completion for every subcommand
- JSON support ( minecraftjson.com )
- World whitelists and blacklists
- Works with versions 1.8.x - 1.20.x
- PlaceholderAPI support (Highly recommended)
- Vault Support
There's only one command built into the plugin, the rest you make yourself! /xcommands (/xc) is an admin only command that has a few different useful subcommands, see the image below:

There's only one permission in this plugin, 'xcommands.admin', which gives access to every command under /xcommands (/xc).
Every command you make has its own permissions that completely customizable, set to 'none' if you want it accessible to everyone !
All messages sent to players are fully customizable in the config.yml !
The custom commands are located inside of the commands folder in the plugin directory, every command has to be in its own .yml configuration file, I recommend copying the example and using it as a template for the rest.
Below is an example command that I've configured to use the most features possible:
Code (YAML):
enabled
: true
name
: 'socials'
# effects whether your text will be processed as json or just as a string
json
: true
# permission node for your command, please set to 'none' if you dont need one
permission
: 'xcommands.command.socials'
# how often anyone can use this command (in milliseconds)
globalCooldown
: 0
# how often can someone use this command (in milliseconds)
cooldown
: 10000
# ban or only allow this command in certain worlds
worldWhiteList
:
-
"world"
worldBlackList
:
[
]
# text:
# each new line is a new line of text sent to the player
# if json is enabled your text should look like this:
# {"text":"youtube","bold":true,"color":"red","clickEvent":{"action":"open_url","value":"http://www.youtube.com/"}}
# if json is disabled, this plugin will replace the & for colour codes
# %player% is replaced with the users username
# placeholders are available if placeholderapi is installed
# commands:
# list of commands for the server to run (don't include / at the start)
# use [player] at the start of a command to run it as a player
# %player% is replaced with the users username
# conditions:
# current conditions are: cost, xp, xpLevel, isOP
# make sure to include the failureMessage field if you want to player to receive a message if they don't meet it
# the tabComplete value changes whether the subcommand shows up in the tab completer
subcommands:
default:
text
:
- '
[
"",
{
"text":
"-----",
"bold":true,
"strikethrough":true,
"color":
"dark_gray"
},
{
"text":
"[",
"color":
"dark_gray"
},
{
"text":
"Socials",
"color":
"red"
},
{
"text":
"]",
"color":
"dark_gray"
},
{
"text":
"-----",
"bold":true,
"strikethrough":true,
"color":
"dark_gray"
}
]'
- '["",{"text":"» ","bold":true,"color":"dark_gray"},{"text":"Youtube
:
","color
":"red
"},{"text
":"/socials youtube
","color
":"gray
","clickEvent
":{"action
":"suggest_command
","value
":"/socials youtube
"}}]'
- '["
",{"text
":"»
","bold
":true,"color
":"dark_gray
"},{"text
":"Twitch
:
","color
":"red
"},{"text
":"/socials twitch
","color
":"gray
","clickEvent
":{"action
":"suggest_command
","value
":"/socials twitch
"}}]'
commands: []
conditions: []
twitch:
tabComplete: true
default:
text:
- '["
",{"text
":"»
","bold
":true,"color
":"dark_gray
"},{"text
":"Click
","color
":"red
","clickEvent
":{"action
":"open_url
","value
":"https://twitch.tv/
"}},{"text
":"to open my
","color
":"gray
","clickEvent
":{"action
":"open_url
","value
":"https://twitch.tv/
"}},{"text
":"Twitch
","bold
":true,"color
":"dark_purple
","clickEvent
":{"action
":"open_url
","value
":"https://twitch.tv/
"}}]'
commands: []
conditions:
xpLevel:
value: 5
deduct: true
failureMessage: '["
",{"text
":"»
","bold
":true,"color
":"dark_gray
"},{"text
":"You need 5 xp levels to run that command
","italic
":true,"color
":"red
"}]'
youtube:
tabComplete: true
default:
text:
- '["
",{"text
":"»
","bold
":true,"color
":"dark_gray
"},{"text
":"Click
","color
":"red
","clickEvent
":{"action
":"open_url
","value
":"https://youtube.com/
"}},{"text
":"to open my
","color
":"gray
","clickEvent
":{"action
":"open_url
","value
":"https://youtube.com/
"}},{"text
":"Youtube
","bold
":true,"color
":"red
","clickEvent
":{"action
":"open_url
","value
":"https://youtube.com/
"}}]'
commands: []
conditions:
cost:
value: 5
deduct: true
failureMessage: '["
",{"text
":"»
","bold
":true,"color
":"dark_gray
"},{"text
":"You need $5 to run that command
","italic
":true,"color
":"red
"}]'
secret:
tabComplete: false
default:
text:
- '["
",{"text
":"»
","bold
":true,"color
":"dark_gray
"},{"text
":"You found my secret :o
","color
":"gray
"}]'
commands:
- 'give %player% diamond 1'
conditions:
cooldown:
value: 30000
failureMessage: '["
",{"text
":"»
","bold
":true,"color
":"dark_gray
"},{"text
":"On cooldown for another
{0
}s
","italic
":true,"color
":"red
"}]'
Make sure to use
minecraftjson.com to customize your JSON messages!
⚠️ Versions 1.16 and above have a slightly different format for show text hover event, so make sure on the minecraftjson.com website to change the "Minecraft Version Compatibility" setting at the bottom to 1.15 or below as the old format still works in newer version. ⚠️
If you have any bugs or suggestions please leave them in the discussion tab, I will get to them ASAP.
![[IMG]](/proxy/image?url=https%3A%2F%2Fi.imgur.com%2FZtU3NSh.gif)