fix behavior around cocoa pods and vines, fixes #277
This commit is contained in:
parent
f25786635b
commit
58d9134286
@ -70,7 +70,7 @@ public interface MovementHelper extends ActionCosts, Helper {
|
|||||||
if (block == Blocks.AIR) { // early return for most common case
|
if (block == Blocks.AIR) { // early return for most common case
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (block == Blocks.FIRE || block == Blocks.TRIPWIRE || block == Blocks.WEB || block == Blocks.END_PORTAL) {
|
if (block == Blocks.FIRE || block == Blocks.TRIPWIRE || block == Blocks.WEB || block == Blocks.END_PORTAL || block == Blocks.COCOA) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (block instanceof BlockDoor || block instanceof BlockFenceGate) {
|
if (block instanceof BlockDoor || block instanceof BlockFenceGate) {
|
||||||
@ -139,6 +139,7 @@ public interface MovementHelper extends ActionCosts, Helper {
|
|||||||
|| block == Blocks.WEB
|
|| block == Blocks.WEB
|
||||||
|| block == Blocks.VINE
|
|| block == Blocks.VINE
|
||||||
|| block == Blocks.LADDER
|
|| block == Blocks.LADDER
|
||||||
|
|| block == Blocks.COCOA
|
||||||
|| block instanceof BlockDoor
|
|| block instanceof BlockDoor
|
||||||
|| block instanceof BlockFenceGate
|
|| block instanceof BlockFenceGate
|
||||||
|| block instanceof BlockSnow
|
|| block instanceof BlockSnow
|
||||||
|
@ -116,7 +116,8 @@ public class MovementDiagonal extends Movement {
|
|||||||
return COST_INF;
|
return COST_INF;
|
||||||
}
|
}
|
||||||
boolean water = false;
|
boolean water = false;
|
||||||
if (MovementHelper.isWater(context.getBlock(x, y, z)) || MovementHelper.isWater(destInto.getBlock())) {
|
Block startIn = context.getBlock(x, y, z);
|
||||||
|
if (MovementHelper.isWater(startIn) || MovementHelper.isWater(destInto.getBlock())) {
|
||||||
// Ignore previous multiplier
|
// Ignore previous multiplier
|
||||||
// Whatever we were walking on (possibly soul sand) doesn't matter as we're actually floating on water
|
// Whatever we were walking on (possibly soul sand) doesn't matter as we're actually floating on water
|
||||||
// Not even touching the blocks below
|
// Not even touching the blocks below
|
||||||
@ -125,6 +126,10 @@ public class MovementDiagonal extends Movement {
|
|||||||
}
|
}
|
||||||
if (optionA != 0 || optionB != 0) {
|
if (optionA != 0 || optionB != 0) {
|
||||||
multiplier *= SQRT_2 - 0.001; // TODO tune
|
multiplier *= SQRT_2 - 0.001; // TODO tune
|
||||||
|
if (startIn == Blocks.LADDER || startIn == Blocks.VINE) {
|
||||||
|
// edging around doesn't work if doing so would climb a ladder or vine instead of moving sideways
|
||||||
|
return COST_INF;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (context.canSprint() && !water) {
|
if (context.canSprint() && !water) {
|
||||||
// If we aren't edging around anything, and we aren't in water
|
// If we aren't edging around anything, and we aren't in water
|
||||||
|
Loading…
Reference in New Issue
Block a user