From 220fa79057e0458bad7665ef5a9596010610a6ea Mon Sep 17 00:00:00 2001 From: fw4hre0xxq <60912178+fw4hre0xxq@users.noreply.github.com> Date: Thu, 27 Feb 2020 17:14:12 -0800 Subject: [PATCH 1/3] fix #1339 --- src/main/java/baritone/pathing/movement/MovementHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/baritone/pathing/movement/MovementHelper.java b/src/main/java/baritone/pathing/movement/MovementHelper.java index 7e1c567a3..d6f0b9a28 100644 --- a/src/main/java/baritone/pathing/movement/MovementHelper.java +++ b/src/main/java/baritone/pathing/movement/MovementHelper.java @@ -302,7 +302,7 @@ public interface MovementHelper extends ActionCosts, Helper { if (block == Blocks.FARMLAND || block == Blocks.GRASS_PATH) { return true; } - if (block == Blocks.ENDER_CHEST || block == Blocks.CHEST) { + if (block == Blocks.ENDER_CHEST || block == Blocks.CHEST || block == Blocks.TRAPPED_CHEST ) { return true; } if (isWater(block)) { From c8856cfea4ffd19fe0909a0446d4aa34813df53c Mon Sep 17 00:00:00 2001 From: Brady Date: Sat, 7 Mar 2020 17:34:27 -0600 Subject: [PATCH 2/3] Fix #1250 --- .../java/baritone/process/BuilderProcess.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/baritone/process/BuilderProcess.java b/src/main/java/baritone/process/BuilderProcess.java index 5af434923..17a8f5f94 100644 --- a/src/main/java/baritone/process/BuilderProcess.java +++ b/src/main/java/baritone/process/BuilderProcess.java @@ -206,7 +206,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil continue; // irrelevant } IBlockState curr = bcc.bsi.get0(x, y, z); - if (curr.getBlock() != Blocks.AIR && !(curr.getBlock() instanceof BlockLiquid) && !valid(curr, desired)) { + if (curr.getBlock() != Blocks.AIR && !(curr.getBlock() instanceof BlockLiquid) && !valid(curr, desired, false)) { BetterBlockPos pos = new BetterBlockPos(x, y, z); Optional rot = RotationUtils.reachable(ctx.player(), pos, ctx.playerController().getBlockReachDistance()); if (rot.isPresent()) { @@ -247,7 +247,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil continue; // irrelevant } IBlockState curr = bcc.bsi.get0(x, y, z); - if (MovementHelper.isReplaceable(x, y, z, curr, bcc.bsi) && !valid(curr, desired)) { + if (MovementHelper.isReplaceable(x, y, z, curr, bcc.bsi) && !valid(curr, desired, false)) { if (dy == 1 && bcc.bsi.get0(x, y + 1, z).getBlock() == Blocks.AIR) { continue; } @@ -314,7 +314,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil ); ctx.player().rotationYaw = originalYaw; ctx.player().rotationPitch = originalPitch; - if (valid(wouldBePlaced, desired)) { + if (valid(wouldBePlaced, desired, true)) { return OptionalInt.of(i); } } @@ -457,7 +457,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil outer: for (IBlockState desired : desirableOnHotbar) { for (int i = 0; i < 9; i++) { - if (valid(approxPlaceable.get(i), desired)) { + if (valid(approxPlaceable.get(i), desired, true)) { usefulSlots.add(i); continue outer; } @@ -468,7 +468,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil outer: for (int i = 9; i < 36; i++) { for (IBlockState desired : noValidHotbarOption) { - if (valid(approxPlaceable.get(i), desired)) { + if (valid(approxPlaceable.get(i), desired, true)) { baritone.getInventoryBehavior().attemptToPutOnHotbar(i, usefulSlots::contains); break outer; } @@ -524,7 +524,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil if (desired != null) { // we care about this position BetterBlockPos pos = new BetterBlockPos(x, y, z); - if (valid(bcc.bsi.get0(x, y, z), desired)) { + if (valid(bcc.bsi.get0(x, y, z), desired, false)) { incorrectPositions.remove(pos); observedCompleted.add(BetterBlockPos.longHash(pos)); } else { @@ -551,7 +551,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil } if (bcc.bsi.worldContainsLoadedChunk(blockX, blockZ)) { // check if its in render distance, not if its in cache // we can directly observe this block, it is in render distance - if (valid(bcc.bsi.get0(blockX, blockY, blockZ), schematic.desiredState(x, y, z, current, this.approxPlaceable))) { + if (valid(bcc.bsi.get0(blockX, blockY, blockZ), schematic.desiredState(x, y, z, current, this.approxPlaceable), false)) { observedCompleted.add(BetterBlockPos.longHash(blockX, blockY, blockZ)); } else { incorrectPositions.add(new BetterBlockPos(blockX, blockY, blockZ)); @@ -769,7 +769,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil return result; } - private boolean valid(IBlockState current, IBlockState desired) { + private boolean valid(IBlockState current, IBlockState desired, boolean itemVerify) { if (desired == null) { return true; } @@ -780,7 +780,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil if (desired.getBlock() instanceof BlockAir && Baritone.settings().buildIgnoreBlocks.value.contains(current.getBlock())) { return true; } - if (!(current.getBlock() instanceof BlockAir) && Baritone.settings().buildIgnoreExisting.value) { + if (!(current.getBlock() instanceof BlockAir) && Baritone.settings().buildIgnoreExisting.value && !itemVerify) { return true; } return current.equals(desired); @@ -862,7 +862,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil } // it should be a real block // is it already that block? - if (valid(bsi.get0(x, y, z), sch)) { + if (valid(bsi.get0(x, y, z), sch, false)) { return Baritone.settings().breakCorrectBlockPenaltyMultiplier.value; } else { // can break if it's wrong From eda18207738ba8d773607e3c6e8f14f0c7bff490 Mon Sep 17 00:00:00 2001 From: Brady Date: Sat, 7 Mar 2020 20:17:53 -0600 Subject: [PATCH 3/3] Fix Cubecraft Crash (Affects 1.13.2+) --- .../launch/mixins/MixinNetHandlerPlayClient.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/launch/java/baritone/launch/mixins/MixinNetHandlerPlayClient.java b/src/launch/java/baritone/launch/mixins/MixinNetHandlerPlayClient.java index e2cc98427..96e9cc29d 100644 --- a/src/launch/java/baritone/launch/mixins/MixinNetHandlerPlayClient.java +++ b/src/launch/java/baritone/launch/mixins/MixinNetHandlerPlayClient.java @@ -21,6 +21,7 @@ import baritone.api.BaritoneAPI; import baritone.api.IBaritone; import baritone.api.event.events.ChunkEvent; import baritone.api.event.events.type.EventState; +import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.network.NetHandlerPlayClient; import net.minecraft.network.play.server.SPacketChunkData; import net.minecraft.network.play.server.SPacketCombatEvent; @@ -45,7 +46,8 @@ public class MixinNetHandlerPlayClient { ) private void preRead(SPacketChunkData packetIn, CallbackInfo ci) { for (IBaritone ibaritone : BaritoneAPI.getProvider().getAllBaritones()) { - if (ibaritone.getPlayerContext().player().connection == (NetHandlerPlayClient) (Object) this) { + EntityPlayerSP player = ibaritone.getPlayerContext().player(); + if (player != null && player.connection == (NetHandlerPlayClient) (Object) this) { ibaritone.getGameEventHandler().onChunkEvent( new ChunkEvent( EventState.PRE, @@ -64,7 +66,8 @@ public class MixinNetHandlerPlayClient { ) private void postHandleChunkData(SPacketChunkData packetIn, CallbackInfo ci) { for (IBaritone ibaritone : BaritoneAPI.getProvider().getAllBaritones()) { - if (ibaritone.getPlayerContext().player().connection == (NetHandlerPlayClient) (Object) this) { + EntityPlayerSP player = ibaritone.getPlayerContext().player(); + if (player != null && player.connection == (NetHandlerPlayClient) (Object) this) { ibaritone.getGameEventHandler().onChunkEvent( new ChunkEvent( EventState.POST, @@ -86,7 +89,8 @@ public class MixinNetHandlerPlayClient { ) private void onPlayerDeath(SPacketCombatEvent packetIn, CallbackInfo ci) { for (IBaritone ibaritone : BaritoneAPI.getProvider().getAllBaritones()) { - if (ibaritone.getPlayerContext().player().connection == (NetHandlerPlayClient) (Object) this) { + EntityPlayerSP player = ibaritone.getPlayerContext().player(); + if (player != null && player.connection == (NetHandlerPlayClient) (Object) this) { ibaritone.getGameEventHandler().onPlayerDeath(); } }