diff --git a/src/launch/java/baritone/launch/mixins/MixinChatScreen.java b/src/launch/java/baritone/launch/mixins/MixinCommandSuggestionHelper.java similarity index 73% rename from src/launch/java/baritone/launch/mixins/MixinChatScreen.java rename to src/launch/java/baritone/launch/mixins/MixinCommandSuggestionHelper.java index 368d9db7..3ed72c27 100644 --- a/src/launch/java/baritone/launch/mixins/MixinChatScreen.java +++ b/src/launch/java/baritone/launch/mixins/MixinCommandSuggestionHelper.java @@ -22,7 +22,7 @@ import baritone.api.event.events.TabCompleteEvent; import com.mojang.brigadier.context.StringRange; import com.mojang.brigadier.suggestion.Suggestion; import com.mojang.brigadier.suggestion.Suggestions; -import net.minecraft.client.gui.screen.ChatScreen; +import net.minecraft.client.gui.CommandSuggestionHelper; import net.minecraft.client.gui.widget.TextFieldWidget; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -40,28 +40,28 @@ import java.util.stream.Stream; * @author Brady * @since 10/9/2019 */ -@Mixin(ChatScreen.class) -public class MixinChatScreen { +@Mixin(CommandSuggestionHelper.class) +public class MixinCommandSuggestionHelper { - @Shadow - protected TextFieldWidget inputField; - //FIXME -/* @Shadow @Final - protected List commandUsage; + private TextFieldWidget field_228095_d_; @Shadow - private CompletableFuture pendingSuggestions; + @Final + private List field_228103_l_; + + @Shadow + private CompletableFuture field_228107_p_; @Inject( - method = "updateSuggestion", + method = "func_228111_a_", at = @At("HEAD"), cancellable = true ) private void preUpdateSuggestion(CallbackInfo ci) { // Anything that is present in the input text before the cursor position - String prefix = this.inputField.getText().substring(0, Math.min(this.inputField.getText().length(), this.inputField.getCursorPosition())); + String prefix = this.field_228095_d_.getText().substring(0, Math.min(this.field_228095_d_.getText().length(), this.field_228095_d_.getCursorPosition())); TabCompleteEvent event = new TabCompleteEvent(prefix); BaritoneAPI.getProvider().getPrimaryBaritone().getGameEventHandler().onPreTabComplete(event); @@ -75,14 +75,14 @@ public class MixinChatScreen { ci.cancel(); // TODO: Support populating the command usage - this.commandUsage.clear(); + this.field_228103_l_.clear(); if (event.completions.length == 0) { - this.pendingSuggestions = Suggestions.empty(); + this.field_228107_p_ = Suggestions.empty(); } else { - int offset = this.inputField.getText().endsWith(" ") - ? this.inputField.getCursorPosition() - : this.inputField.getText().lastIndexOf(" ") + 1; // If there is no space this is still 0 haha yes + int offset = this.field_228095_d_.getText().endsWith(" ") + ? this.field_228095_d_.getCursorPosition() + : this.field_228095_d_.getText().lastIndexOf(" ") + 1; // If there is no space this is still 0 haha yes List suggestionList = Stream.of(event.completions) .map(s -> new Suggestion(StringRange.between(offset, offset + s.length()), s)) @@ -92,9 +92,9 @@ public class MixinChatScreen { StringRange.between(offset, offset + suggestionList.stream().mapToInt(s -> s.getText().length()).max().orElse(0)), suggestionList); - this.pendingSuggestions = new CompletableFuture<>(); - this.pendingSuggestions.complete(suggestions); + this.field_228107_p_ = new CompletableFuture<>(); + this.field_228107_p_.complete(suggestions); } } - }*/ + } } diff --git a/src/launch/java/baritone/launch/mixins/MixinMinecraft.java b/src/launch/java/baritone/launch/mixins/MixinMinecraft.java index a36963a0..03b87fbc 100644 --- a/src/launch/java/baritone/launch/mixins/MixinMinecraft.java +++ b/src/launch/java/baritone/launch/mixins/MixinMinecraft.java @@ -19,6 +19,7 @@ package baritone.launch.mixins; import baritone.api.BaritoneAPI; import baritone.api.IBaritone; +import baritone.api.event.events.BlockInteractEvent; import baritone.api.event.events.TickEvent; import baritone.api.event.events.WorldEvent; import baritone.api.event.events.type.EventState; @@ -27,6 +28,10 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.world.ClientWorld; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.math.BlockRayTraceResult; import org.spongepowered.asm.lib.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -34,6 +39,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; import java.util.function.BiFunction; @@ -138,18 +144,18 @@ public class MixinMinecraft { // allow user input is only the primary baritone return (BaritoneAPI.getProvider().getPrimaryBaritone().getPathingBehavior().getCurrent() != null && player != null) || screen.passEvents; } - //FIXME stupid LVT -/* + @Inject( method = "rightClickMouse", at = @At( value = "INVOKE", - target = "net/minecraft/client/entity/player/ClientPlayerEntity.swingArm(Lnet/minecraft/util/Hand;)V" + target = "net/minecraft/client/entity/player/ClientPlayerEntity.swingArm(Lnet/minecraft/util/Hand;)V", + ordinal = 1 ), locals = LocalCapture.CAPTURE_FAILHARD ) private void onBlockUse(CallbackInfo ci, Hand var1[], int var2, int var3, Hand enumhand, ItemStack itemstack, BlockRayTraceResult raytrace, int i, ActionResultType enumactionresult) { // rightClickMouse is only for the main player BaritoneAPI.getProvider().getPrimaryBaritone().getGameEventHandler().onBlockInteract(new BlockInteractEvent(raytrace.getPos(), BlockInteractEvent.Type.USE)); - }*/ + } } diff --git a/src/launch/resources/mixins.baritone.json b/src/launch/resources/mixins.baritone.json index cb7195d0..8b1c716f 100644 --- a/src/launch/resources/mixins.baritone.json +++ b/src/launch/resources/mixins.baritone.json @@ -9,7 +9,7 @@ }, "client": [ "MixinBitArray", - "MixinChatScreen", + "MixinCommandSuggestionHelper", "MixinChunkArray", "MixinClientChunkProvider", "MixinClientPlayerEntity",