User Tools

Site Tools


ru:tutorial:commands:redirects_chaining

Редиректы (Цепные команды)

Примечание: статья в разработке.

Такие команды, как /execute as @e[type=player] in the_end run tp ~ ~ ~ возможны из-за перенаправления. Ниже приведен пример цепной команды:

  1. LiteralCommandNode<ServerCommandSource> root = dispatcher.register(literal("fabric_test"));
  2. LiteralCommandNode<ServerCommandSource> root1 = dispatcher.register(literal("fabric_test")
  3. // Вы можете зарегистрироваться под одним и тем же литералом более одного раза, он просто зарегистрирует новые части ветки, как показано ниже, если вы зарегистрируете дублирующуюся ветку, в консоли появится сообщение об ошибке с предупреждением о конфликтующих командах, но одна из них все равно будет работать.
  4. .then(literal("extra")
  5. .then(literal("long")
  6. .redirect(root, this::lengthen)) // Возвращение к корню цепи
  7. .then(literal("short")
  8. .redirect(root, this::shorten))) // Возвращение к корню цепи
  9. .then(literal("command")
  10. .executes(ctx -> {
  11. ctx.getSource().sendFeedback(new LiteralText("Chainable Command"), false);
  12. return Command.SINGLE_SUCCESS;
  13. })));

Редирект также может изменять CommandSource с помощью модификатора redirect, который можно использовать для команд конструктора.

  1. .redirect(rootNode, context -> {
  2. return ((ServerCommandSource) context.getSource()).withLookingAt(Vec3ArgumentType.getVec3(context, "pos"));
  3. })
ru/tutorial/commands/redirects_chaining.txt · Last modified: 2022/03/03 12:58 by furnygo