Fix stuck issue
While boat clutching and breaking a side block
This commit is contained in:
@@ -1006,14 +1006,13 @@ public class LegacyAgent extends Agent {
|
||||
|
||||
bot.setItem(new ItemStack(item));
|
||||
|
||||
if (level == LegacyLevel.EAST_D || level == LegacyLevel.NORTH_D || level == LegacyLevel.SOUTH_D || level == LegacyLevel.WEST_D
|
||||
|| level == LegacyLevel.EAST_D_2 || level == LegacyLevel.NORTH_D_2 || level == LegacyLevel.SOUTH_D_2 || level == LegacyLevel.WEST_D_2) {
|
||||
if (level.isSideDown() || level.isSideDown2()) {
|
||||
bot.setBotPitch(69);
|
||||
|
||||
scheduler.runTaskLater(plugin, () -> {
|
||||
btCheck.put(player, true);
|
||||
}, 5);
|
||||
} else if (level == LegacyLevel.EAST_U || level == LegacyLevel.NORTH_U || level == LegacyLevel.SOUTH_U || level == LegacyLevel.WEST_U) {
|
||||
} else if (level.isSideUp()) {
|
||||
bot.setBotPitch(-53);
|
||||
}else if (level == LegacyLevel.AT_D || level == LegacyLevel.AT) {
|
||||
Location blockLoc = block.getLocation().add(0.5, -1, 0.5);
|
||||
@@ -1035,10 +1034,10 @@ public class LegacyAgent extends Agent {
|
||||
miningAnim.put(player, task);
|
||||
}
|
||||
|
||||
blockBreakEffect(bot, player, block, level);
|
||||
blockBreakEffect(bot, player, block, new LegacyLevel.LevelWrapper(level));
|
||||
}
|
||||
|
||||
private void blockBreakEffect(Terminator bot, LivingEntity player, Block block, LegacyLevel level) {
|
||||
private void blockBreakEffect(Terminator bot, LivingEntity player, Block block, LegacyLevel.LevelWrapper wrapper) {
|
||||
|
||||
if (LegacyMats.NO_CRACK.contains(block.getType())) return;
|
||||
|
||||
@@ -1050,7 +1049,7 @@ public class LegacyAgent extends Agent {
|
||||
byte i = mining.get(this);
|
||||
|
||||
Block cur;
|
||||
switch (level) {
|
||||
switch (wrapper.getLevel()) {
|
||||
case ABOVE:
|
||||
cur = player.getLocation().add(0, 2, 0).getBlock();
|
||||
break;
|
||||
@@ -1112,6 +1111,34 @@ public class LegacyAgent extends Agent {
|
||||
cur = player.getLocation().add(0, 1, 0).getBlock();
|
||||
}
|
||||
|
||||
// Fix boat clutching while breaking block
|
||||
if ((wrapper.getLevel().isSideAt() || wrapper.getLevel().isSideUp())
|
||||
&& bot.getLocation().add(0, -2, 0).getBlock().getType() == Material.LAVA
|
||||
&& block.getLocation().clone().add(0, 1, 0).equals(cur.getLocation())) {
|
||||
cur = block;
|
||||
wrapper.setLevel(wrapper.getLevel().sideDown());
|
||||
|
||||
if (wrapper.getLevel().isSideDown() || wrapper.getLevel().isSideDown2())
|
||||
bot.setBotPitch(69);
|
||||
else if (wrapper.getLevel().isSideUp())
|
||||
bot.setBotPitch(-53);
|
||||
else if (wrapper.getLevel().isSide())
|
||||
bot.setBotPitch(0);
|
||||
}
|
||||
if ((wrapper.getLevel().isSideAt() || wrapper.getLevel().isSideDown())
|
||||
&& bot.getLocation().add(0, -1, 0).getBlock().getType() == Material.LAVA
|
||||
&& block.getLocation().clone().add(0, -1, 0).equals(cur.getLocation())) {
|
||||
cur = block;
|
||||
wrapper.setLevel(wrapper.getLevel().sideUp());
|
||||
|
||||
if (wrapper.getLevel().isSideDown() || wrapper.getLevel().isSideDown2())
|
||||
bot.setBotPitch(69);
|
||||
else if (wrapper.getLevel().isSideUp())
|
||||
bot.setBotPitch(-53);
|
||||
else if (wrapper.getLevel().isSide())
|
||||
bot.setBotPitch(0);
|
||||
}
|
||||
|
||||
// wow this repeated code is so bad lmao
|
||||
|
||||
if (player.isDead() || cur == null || (!block.equals(cur) || block.getType() != cur.getType())) {
|
||||
@@ -1139,7 +1166,7 @@ public class LegacyAgent extends Agent {
|
||||
|
||||
block.breakNaturally();
|
||||
|
||||
if (level == LegacyLevel.ABOVE) {
|
||||
if (wrapper.getLevel() == LegacyLevel.ABOVE) {
|
||||
noJump.add(player);
|
||||
|
||||
scheduler.runTaskLater(plugin, () -> {
|
||||
|
||||
@@ -32,8 +32,102 @@ public enum LegacyLevel {
|
||||
AT,
|
||||
AT_D
|
||||
));
|
||||
private static final Set<LegacyLevel> SIDE_AT = new HashSet<>(Arrays.asList(
|
||||
NORTH,
|
||||
SOUTH,
|
||||
EAST,
|
||||
WEST
|
||||
));
|
||||
private static final Set<LegacyLevel> SIDE_UP = new HashSet<>(Arrays.asList(
|
||||
NORTH_U,
|
||||
SOUTH_U,
|
||||
EAST_U,
|
||||
WEST_U
|
||||
));
|
||||
private static final Set<LegacyLevel> SIDE_DOWN = new HashSet<>(Arrays.asList(
|
||||
NORTH_D,
|
||||
SOUTH_D,
|
||||
EAST_D,
|
||||
WEST_D
|
||||
));
|
||||
private static final Set<LegacyLevel> SIDE_DOWN_2 = new HashSet<>(Arrays.asList(
|
||||
NORTH_D_2,
|
||||
SOUTH_D_2,
|
||||
EAST_D_2,
|
||||
WEST_D_2
|
||||
));
|
||||
|
||||
public boolean isSide() {
|
||||
return !NON_SIDE.contains(this);
|
||||
}
|
||||
|
||||
public boolean isSideAt() {
|
||||
return SIDE_AT.contains(this);
|
||||
}
|
||||
|
||||
public boolean isSideUp() {
|
||||
return SIDE_UP.contains(this);
|
||||
}
|
||||
|
||||
public boolean isSideDown() {
|
||||
return SIDE_DOWN.contains(this);
|
||||
}
|
||||
|
||||
public boolean isSideDown2() {
|
||||
return SIDE_DOWN_2.contains(this);
|
||||
}
|
||||
|
||||
public LegacyLevel sideUp() {
|
||||
switch(this) {
|
||||
case NORTH: return NORTH_U;
|
||||
case SOUTH: return SOUTH_U;
|
||||
case EAST: return EAST_U;
|
||||
case WEST: return WEST_U;
|
||||
case NORTH_D: return NORTH;
|
||||
case SOUTH_D: return SOUTH;
|
||||
case EAST_D: return EAST;
|
||||
case WEST_D: return WEST;
|
||||
case NORTH_D_2: return NORTH_D;
|
||||
case SOUTH_D_2: return SOUTH_D;
|
||||
case EAST_D_2: return EAST_D;
|
||||
case WEST_D_2: return WEST_D;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public LegacyLevel sideDown() {
|
||||
switch(this) {
|
||||
case NORTH_U: return NORTH;
|
||||
case SOUTH_U: return SOUTH;
|
||||
case EAST_U: return EAST;
|
||||
case WEST_U: return WEST;
|
||||
case NORTH: return NORTH_D;
|
||||
case SOUTH: return SOUTH_D;
|
||||
case EAST: return EAST_D;
|
||||
case WEST: return WEST_D;
|
||||
case NORTH_D: return NORTH_D_2;
|
||||
case SOUTH_D: return SOUTH_D_2;
|
||||
case EAST_D: return EAST_D_2;
|
||||
case WEST_D: return WEST_D_2;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static class LevelWrapper {
|
||||
private LegacyLevel level;
|
||||
|
||||
public LevelWrapper(LegacyLevel level) {
|
||||
this.level = level;
|
||||
}
|
||||
|
||||
public LegacyLevel getLevel() {
|
||||
return level;
|
||||
}
|
||||
|
||||
public void setLevel(LegacyLevel level) {
|
||||
this.level = level;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user