From 7dd881aa9adc0dd8c39581540395279f21664dfb Mon Sep 17 00:00:00 2001 From: Leijurv Date: Tue, 5 Feb 2019 09:54:17 -0800 Subject: [PATCH] latest forge works yay --- SETUP.md | 4 +- .../baritone/launch/mixins/MixinEntity.java | 74 ------------------- .../launch/mixins/MixinEntityLivingBase.java | 21 ++++++ src/launch/resources/mixins.baritone.json | 1 - 4 files changed, 24 insertions(+), 76 deletions(-) delete mode 100644 src/launch/java/baritone/launch/mixins/MixinEntity.java diff --git a/SETUP.md b/SETUP.md index 2dc1eb47..dfbb1fa7 100644 --- a/SETUP.md +++ b/SETUP.md @@ -5,7 +5,9 @@ Not always completely up to date with latest features. -The forge release (currently `baritone-forge-1.1.0.jar`) can simply be added as a Forge mod. However, it is not fully compatible with the latest version of Forge. `freeLook` was broken in Forge 14.23.4.2744. You should use Forge 14.23.4.2743 or **older** with Baritone. Newer versions of Forge "work", sort of, but Baritone's movement becomes unreliable and `freeLook` must be off. +The forge release (currently `baritone-forge-1.1.3.jar`) can simply be added as a Forge mod. + +Previously (Baritone v1.1.2 and below), it was not fully compatible with the latest version of Forge. `freeLook` was broken in Forge 14.23.4.2744. Forge 14.23.4.2743 or **older** worked with Baritone v1.1.2 and lower. Newer versions of Forge "worked", sort of, but Baritone's movement became unreliable and `freeLook` must be off. ## Build it yourself - Clone or download Baritone diff --git a/src/launch/java/baritone/launch/mixins/MixinEntity.java b/src/launch/java/baritone/launch/mixins/MixinEntity.java deleted file mode 100644 index 83655783..00000000 --- a/src/launch/java/baritone/launch/mixins/MixinEntity.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * This file is part of Baritone. - * - * Baritone is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Baritone is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Baritone. If not, see . - */ - -package baritone.launch.mixins; - -import baritone.api.BaritoneAPI; -import baritone.api.event.events.RotationMoveEvent; -import net.minecraft.client.entity.EntityPlayerSP; -import net.minecraft.entity.Entity; -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.Redirect; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import static org.spongepowered.asm.lib.Opcodes.GETFIELD; - -/** - * @author Brady - * @since 8/21/2018 - */ -@Mixin(Entity.class) -public class MixinEntity { - - @Shadow - public float rotationYaw; - - /** - * Event called to override the movement direction when walking - */ - private RotationMoveEvent motionUpdateRotationEvent; - - @Inject( - method = "moveRelative", - at = @At("HEAD") - ) - private void preMoveRelative(float strafe, float up, float forward, float friction, CallbackInfo ci) { - // noinspection ConstantConditions - if (EntityPlayerSP.class.isInstance(this)) { - this.motionUpdateRotationEvent = new RotationMoveEvent(RotationMoveEvent.Type.MOTION_UPDATE, this.rotationYaw); - BaritoneAPI.getProvider().getBaritoneForPlayer((EntityPlayerSP) (Object) this).getGameEventHandler().onPlayerRotationMove(this.motionUpdateRotationEvent); - } - } - - @Redirect( - method = "moveRelative", - at = @At( - value = "FIELD", - opcode = GETFIELD, - target = "net/minecraft/entity/Entity.rotationYaw:F" - ) - ) - private float overrideYaw(Entity self) { - if (self instanceof EntityPlayerSP) { - return this.motionUpdateRotationEvent.getYaw(); - } - return self.rotationYaw; - } -} diff --git a/src/launch/java/baritone/launch/mixins/MixinEntityLivingBase.java b/src/launch/java/baritone/launch/mixins/MixinEntityLivingBase.java index c6d76634..460d8a27 100644 --- a/src/launch/java/baritone/launch/mixins/MixinEntityLivingBase.java +++ b/src/launch/java/baritone/launch/mixins/MixinEntityLivingBase.java @@ -74,4 +74,25 @@ public abstract class MixinEntityLivingBase extends Entity { } return self.rotationYaw; } + + @Redirect( + method = "travel", + at = @At( + value = "INVOKE", + target = "net/minecraft/entity/EntityLivingBase.moveRelative(FFFF)V" + ) + ) + private void travel(EntityLivingBase self, float strafe, float up, float forward, float friction) { + // noinspection ConstantConditions + if (!EntityPlayerSP.class.isInstance(this)) { + moveRelative(strafe, up, forward, friction); + return; + } + RotationMoveEvent motionUpdateRotationEvent = new RotationMoveEvent(RotationMoveEvent.Type.MOTION_UPDATE, this.rotationYaw); + BaritoneAPI.getProvider().getBaritoneForPlayer((EntityPlayerSP) (Object) this).getGameEventHandler().onPlayerRotationMove(motionUpdateRotationEvent); + float originalYaw = this.rotationYaw; + this.rotationYaw = motionUpdateRotationEvent.getYaw(); + this.moveRelative(strafe, up, forward, friction); + this.rotationYaw = originalYaw; + } } diff --git a/src/launch/resources/mixins.baritone.json b/src/launch/resources/mixins.baritone.json index ddd3a718..fea9cca7 100644 --- a/src/launch/resources/mixins.baritone.json +++ b/src/launch/resources/mixins.baritone.json @@ -14,7 +14,6 @@ "MixinChunkProviderServer", "MixinChunkRenderContainer", "MixinChunkRenderWorker", - "MixinEntity", "MixinEntityLivingBase", "MixinEntityPlayerSP", "MixinEntityRenderer",