diff --git a/src/main/java/baritone/process/ElytraProcess.java b/src/main/java/baritone/process/ElytraProcess.java index b4ce3623a..135221967 100644 --- a/src/main/java/baritone/process/ElytraProcess.java +++ b/src/main/java/baritone/process/ElytraProcess.java @@ -48,11 +48,9 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.Vec3i; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.Queue; -import java.util.Set; +import java.util.*; import static baritone.api.pathing.movement.ActionCosts.COST_INF; @@ -373,12 +371,11 @@ public class ElytraProcess extends BaritoneProcessHelper implements IBaritonePro BlockPos.MutableBlockPos mut = new BlockPos.MutableBlockPos(pos); checkedSpots.add(mut.toLong()); while (mut.getY() >= 0) { - IBlockState state = ctx.world().getBlockState(mut); Block block = state.getBlock(); if (block == Blocks.NETHERRACK || block == Blocks.GRAVEL || block == Blocks.NETHER_BRICK) { - return true; + return !isAtEdge(mut); } else if (block != Blocks.AIR) { return false; } @@ -392,7 +389,8 @@ public class ElytraProcess extends BaritoneProcessHelper implements IBaritonePro private BetterBlockPos findSafeLandingSpot() { final BetterBlockPos start = ctx.playerFeet(); - Queue queue = new LinkedList<>(); + Queue queue = new PriorityQueue<>(Comparator.comparingInt(Vec3i::getY).reversed()); + //Queue queue = new LinkedList<>(); Set visited = new HashSet<>(); LongOpenHashSet checkedPositions = new LongOpenHashSet(); queue.add(start);