diff --git a/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/mixin/optimization/stream/CommandNodeMixin_Optimization.java b/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/mixin/optimization/stream/CommandNodeMixin_Optimization.java new file mode 100644 index 00000000..e9d412ef --- /dev/null +++ b/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/mixin/optimization/stream/CommandNodeMixin_Optimization.java @@ -0,0 +1,32 @@ +package io.izzel.arclight.impl.mixin.optimization.stream; + +import com.mojang.brigadier.Command; +import com.mojang.brigadier.RedirectModifier; +import com.mojang.brigadier.tree.CommandNode; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Map; +import java.util.TreeMap; +import java.util.function.Predicate; + +@Mixin(value = CommandNode.class, remap = false) +public class CommandNodeMixin_Optimization { + + // @formatter:off + @Shadow private Map> children; + // @formatter:on + + @Inject(method = "", at = @At("RETURN")) + private void arclight$init(Command command, Predicate requirement, CommandNode redirect, RedirectModifier modifier, boolean forks, CallbackInfo ci) { + this.children = new TreeMap<>(); + } + + @Inject(method = "addChild", cancellable = true, at = @At(value = "INVOKE", target = "Ljava/util/Map;entrySet()Ljava/util/Set;")) + private void arclight$skipSort(CommandNode node, CallbackInfo ci) { + ci.cancel(); + } +} diff --git a/arclight-forge-1.16/src/main/resources/mixins.arclight.impl.optimization.stream.1_16.json b/arclight-forge-1.16/src/main/resources/mixins.arclight.impl.optimization.stream.1_16.json index 8234766a..c35cbaf4 100644 --- a/arclight-forge-1.16/src/main/resources/mixins.arclight.impl.optimization.stream.1_16.json +++ b/arclight-forge-1.16/src/main/resources/mixins.arclight.impl.optimization.stream.1_16.json @@ -4,6 +4,7 @@ "target": "@env(DEFAULT)", "refmap": "mixins.arclight.impl.refmap.1_16.json", "mixins": [ + "CommandNodeMixin_Optimization", "GoalSelectorMixin", "ITaskQueue_PriorityMixin" ]