====== Редиректы (Цепные команды) ======
**Примечание:** статья в разработке.
Такие команды, как ''/execute as @e[type=player] in the_end run tp ~ ~ ~'' возможны из-за перенаправления. Ниже приведен пример цепной команды:
LiteralCommandNode root = dispatcher.register(literal("fabric_test"));
LiteralCommandNode root1 = dispatcher.register(literal("fabric_test")
// Вы можете зарегистрироваться под одним и тем же литералом более одного раза, он просто зарегистрирует новые части ветки, как показано ниже, если вы зарегистрируете дублирующуюся ветку, в консоли появится сообщение об ошибке с предупреждением о конфликтующих командах, но одна из них все равно будет работать.
.then(literal("extra")
.then(literal("long")
.redirect(root, this::lengthen)) // Возвращение к корню цепи
.then(literal("short")
.redirect(root, this::shorten))) // Возвращение к корню цепи
.then(literal("command")
.executes(ctx -> {
ctx.getSource().sendFeedback(new LiteralText("Chainable Command"), false);
return Command.SINGLE_SUCCESS;
})));
Редирект также может изменять ''CommandSource'' с помощью модификатора ''redirect'', который можно использовать для команд конструктора.
.redirect(rootNode, context -> {
return ((ServerCommandSource) context.getSource()).withLookingAt(Vec3ArgumentType.getVec3(context, "pos"));
})