tutorial:commands
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tutorial:commands [2023/11/18 11:21] – solidblock | tutorial:commands [2025/07/06 07:10] (current) – [Register a basic command] solidblock | ||
---|---|---|---|
Line 3: | Line 3: | ||
====== Creating Commands ====== | ====== Creating Commands ====== | ||
- | Creating commands can allow a mod developer to add functionality that can used through a command. This tutorial will teach you how to register commands, and the general command structure of Brigadier. | + | Creating commands can allow a mod developer to add functionality that can be used through a command. This tutorial will teach you how to register commands, and the general command structure of Brigadier. |
===== What is Brigadier? ===== | ===== What is Brigadier? ===== | ||
Line 105: | Line 105: | ||
</ | </ | ||
- | **Please ensure you import the correct static method.** The method '' | + | **Please ensure you import the correct static method.** The method '' |
In the '' | In the '' | ||
Line 130: | Line 130: | ||
===== Static Imports ===== | ===== Static Imports ===== | ||
- | In the example above, the use of static imports is used for code simplifying. For a literal this would shorten the statement to '' | + | In the example above, the use of static imports is used for code simplifying. For a literal this would shorten the statement to '' |
Below is an example of some static imports: | Below is an example of some static imports: | ||
Line 320: | Line 320: | ||
You can also do this, however it is much less stable than registering commands and could cause unwanted side effects. To keep things simple, you need to use reflection on brigadier and remove the nodes. After this, you need to send the command tree to every player again using '' | You can also do this, however it is much less stable than registering commands and could cause unwanted side effects. To keep things simple, you need to use reflection on brigadier and remove the nodes. After this, you need to send the command tree to every player again using '' | ||
+ | ===== Can I execute command without typing in game? ===== | ||
+ | Yes! You can. Before trying the next code, take note it works on Fabric 0.91.6+1.20.2 and it was not tested in other versions. | ||
+ | |||
+ | Here is the code example | ||
+ | |||
+ | <code java> | ||
+ | private void vanillaCommandByPlayer(World world, BlockPos pos, String command) { | ||
+ | PlayerEntity player = world.getClosestPlayer(pos.getX(), | ||
+ | if (player != null) { | ||
+ | CommandManager commandManager = Objects.requireNonNull(player.getServer()).getCommandManager(); | ||
+ | ServerCommandSource commandSource = player.getServer().getCommandSource(); | ||
+ | commandManager.executeWithPrefix(commandSource, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | First, you need a CommandManager< | ||
+ | Second, you need the ServerCommandSource. | ||
+ | Then, u can call some CommandManager public methods like commandeManader.execute. (.execute need ParseResults< | ||
+ | But commandeManader.executeWithPrefix allow you to use String. You can also put the slash (/). | ||
+ | |||
+ | So... have fun! |
tutorial/commands.1700306513.txt.gz · Last modified: 2023/11/18 11:21 by solidblock