====== Редиректы (Цепные команды) ====== **Примечание:** статья в разработке. Такие команды, как ''/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")); })