From b3ff3d24665e1ed782c66647b8617366dc87d351 Mon Sep 17 00:00:00 2001 From: Entropy5 <44469915+Entropy5@users.noreply.github.com> Date: Tue, 21 Dec 2021 20:09:22 +0100 Subject: [PATCH] universal buildignoredirection --- .../java/baritone/process/BuilderProcess.java | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/main/java/baritone/process/BuilderProcess.java b/src/main/java/baritone/process/BuilderProcess.java index 49f1564a..e837c4a7 100644 --- a/src/main/java/baritone/process/BuilderProcess.java +++ b/src/main/java/baritone/process/BuilderProcess.java @@ -45,12 +45,12 @@ import baritone.utils.schematic.MapArtSchematic; import baritone.utils.schematic.SelectionSchematic; import baritone.utils.schematic.SchematicSystem; import baritone.utils.schematic.schematica.SchematicaHelper; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; import it.unimi.dsi.fastutil.longs.LongOpenHashSet; -import net.minecraft.block.BlockAir; -import net.minecraft.block.BlockLiquid; -import net.minecraft.block.BlockGlazedTerracotta; -import net.minecraft.block.BlockBone; -import net.minecraft.block.BlockHay; +import net.minecraft.block.*; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.item.ItemBlock; @@ -835,6 +835,25 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil return result; } + public static final Set> orientationProps = + ImmutableSet.of(BlockRotatedPillar.AXIS, BlockLog.LOG_AXIS, BlockHorizontal.FACING, + BlockStairs.FACING, BlockStairs.HALF, BlockStairs.SHAPE, + BlockPane.NORTH, BlockPane.EAST, BlockPane.SOUTH, BlockPane.WEST, BlockVine.UP, + BlockTrapDoor.OPEN, BlockTrapDoor.HALF + ); + + private boolean sameWithoutOrientation(IBlockState first, IBlockState second) { + if (first.getBlock() != second.getBlock() + ) {return false;} + ImmutableMap, Comparable> map1 = first.getProperties(); + ImmutableMap, Comparable> map2 = second.getProperties(); + for (IProperty prop : map1.keySet()) { + if (map1.get(prop) != map2.get(prop) && !orientationProps.contains(prop) + ) {return false;} + } + return true; + } + private boolean valid(IBlockState current, IBlockState desired, boolean itemVerify) { if (desired == null) { return true; @@ -860,7 +879,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil if (current.equals(desired)) { return true; } - return Baritone.settings().buildIgnoreDirection.value && current.getBlock() == desired.getBlock(); + return Baritone.settings().buildIgnoreDirection.value && sameWithoutOrientation(current, desired); } public class BuilderCalculationContext extends CalculationContext {