User Tools

Site Tools


tutorial:commands

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
tutorial:commands [2020/06/14 04:55] – [Sorry for the mess] i509vcbtutorial:commands [2020/06/14 05:13] – Refactor FAQ section i509vcb
Line 212: Line 212:
 CommandManager is in ''net.minecraft.server.command'' CommandManager is in ''net.minecraft.server.command''
  
-===== Advanced concepts =====+====== Advanced concepts ======
  
 Below are links to the articles about more complex concepts used in brigadier. Below are links to the articles about more complex concepts used in brigadier.
Line 595: Line 595:
 } }
 </file> </file>
-===== FAQ =====+====== FAQ ======
  
-=== What else can I send feedback to the CommandSource? ===+===== Why does my command not compile =====
  
-You use the Text classes (LiteralText, TranslatableText, KeybindText, etc).+There are two immediate possibilities for why this could occur.
  
-=== Why does my IDE complain saying that a method executed by my command needs to catch or throw a CommandSyntaxException ===+==== Catch or throw a CommandSyntaxException ====
  
-The solution to this is just to make the methods throw a CommandSyntaxException. This is because brigadier handles the exceptions.+The solution to this issue is to make the run or suggest methods throw a CommandSyntaxException. Don't worry, brigadier will handle the exceptions and output the proper error message.
  
-=== Can I register commands in runtime? ===+==== Issues with generics ====
  
-You can do this but it is not reccomendedYou would get the instance of the CommandManager and add anything you wish to the CommandDispatcher within it.+You may have an issue with generic types once in a whileVerify you are using ''CommandManager.literal(...)'' or ''CommandManager.argument(...)'' instead ''LiteralArgumentBuilder'' or ''RequiredArgumentBuilder''.
  
-After that you will need to send the command tree to every player again using ''CommandManager.sendCommandTree(ServerPlayerEntity)''+===== Can I register client side commands? =====
  
-=== Can I unregister commands in runtime? ===+Fabric doesn't currently support client side commands. There is a [[https://github.com/CottonMC/ClientCommands|third-party mod]] by the Cotton team that adds this functionality.
  
-You can also do this but it is very unstable and could cause unwanted side effects. Lets just say it involves a bunch of Reflection.+===== Dark Arts =====
  
-Once again you will need to send the command tree to every player again using ''CommandManager.sendCommandTree(ServerPlayerEntity)'' afterwards.+A few things we don't recommend, but are possible.
  
-=== Can I register client side commands? ===+==== Can I register commands in runtime====
  
-Well Fabric currently doesn't support this natively but there is a mod by the Cotton team that adds this functionality where the commands do not run on the server and only on the client+You can do this but it is not recommended. You would get the ''CommandManager'' from the server and add anything commands you wish to it's ''CommandDispatcher''
-https://github.com/CottonMC/ClientCommands+ 
 +After that you need to send the command tree to every player again using ''sendCommandTree(ServerPlayerEntity)''. This is required because the client locally caches the command tree it receives during login (or when operator packets are sent) for local completions rich error messages. 
 + 
 +==== Can I unregister commands in runtime? ==== 
 + 
 +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 ''sendCommandTree(ServerPlayerEntity)''. If you don't send the updated command tree, the client may think a command still exists, even though the server will fail execution.
tutorial/commands.txt · Last modified: 2024/02/23 14:22 by allen1210