Finish mlg handling

Issues:
-Twisting vines placement will delete block standing on (example: if landing with open trapdoor, vines deletes the block)
-OnGround does not handle standing on moving pistons
This commit is contained in:
ThisTestUser
2022-10-19 12:21:10 -04:00
parent 3fa35c17f9
commit cd275341cb
2 changed files with 26 additions and 3 deletions

View File

@@ -369,7 +369,7 @@ public class LegacyAgent extends Agent {
if (groundLoc == null) return;
Location loc = !LegacyMats.shouldReplace(groundLoc.getBlock(), yPos, nether) ? groundLoc.add(0, 1, 0) : groundLoc;
boolean waterloggable = loc.getBlock().getBlockData() instanceof Waterlogged;
boolean waterloggable = !nether && loc.getBlock().getBlockData() instanceof Waterlogged;
boolean waterlogged = waterloggable && ((Waterlogged)loc.getBlock().getBlockData()).isWaterlogged();
event.setCancelled(true);
@@ -390,7 +390,7 @@ public class LegacyAgent extends Agent {
scheduler.runTaskLater(plugin, () -> {
Block block = loc.getBlock();
boolean waterloggedNow = block.getBlockData() instanceof Waterlogged
boolean waterloggedNow = !nether && block.getBlockData() instanceof Waterlogged
&& ((Waterlogged)block.getBlockData()).isWaterlogged();
if (block.getType() == Material.WATER || waterloggedNow) {
bot.look(BlockFace.DOWN);

View File

@@ -6,6 +6,7 @@ import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.Bisected;
import org.bukkit.block.data.Waterlogged;
import org.bukkit.block.data.Bisected.Half;
import org.bukkit.block.data.type.*;
import com.google.common.collect.Lists;
@@ -315,6 +316,10 @@ public class LegacyMats {
if (block.getType() == Material.LIGHTNING_ROD && !((LightningRod)block.getBlockData()).isWaterlogged()
&& (((LightningRod)block.getBlockData()).getFacing() == BlockFace.UP || ((LightningRod)block.getBlockData()).getFacing() == BlockFace.DOWN))
return false;
if (block.getType().data == TrapDoor.class && (((TrapDoor)block.getBlockData()).getHalf() == Half.TOP
|| (((TrapDoor)block.getBlockData()).getHalf() == Half.BOTTOM && ((TrapDoor)block.getBlockData()).isOpen()))
&& !((TrapDoor)block.getBlockData()).isWaterlogged())
return false;
return true;
} else {
if (block.getType().name().endsWith("_CARPET"))
@@ -338,6 +343,8 @@ public class LegacyMats {
case END_ROD:
case FLOWER_POT:
case SCAFFOLDING:
case COMPARATOR:
case REPEATER:
return true;
default:
break;
@@ -373,6 +380,14 @@ public class LegacyMats {
return false;
if (block.getType().data == Gate.class)
return false;
if (block.getType() == Material.PISTON_HEAD && ((PistonHead)block.getBlockData()).getFacing() != BlockFace.UP)
return false;
if (block.getType().data == Piston.class && ((Piston)block.getBlockData()).getFacing() != BlockFace.DOWN
&& ((Piston)block.getBlockData()).isExtended())
return false;
if (block.getType().data == TrapDoor.class && (((TrapDoor)block.getBlockData()).getHalf() == Half.BOTTOM
|| ((TrapDoor)block.getBlockData()).isOpen()))
return false;
switch (block.getType()) {
case POINTED_DRIPSTONE:
case SMALL_AMETHYST_BUD:
@@ -405,10 +420,12 @@ public class LegacyMats {
case CONDUIT:
case END_PORTAL_FRAME:
case FARMLAND:
case LADDER:
case DAYLIGHT_DETECTOR:
case HONEY_BLOCK:
case HOPPER:
case LIGHTNING_ROD:
case SCULK_SENSOR:
case SCULK_SHRIEKER:
return false;
default:
}
@@ -441,8 +458,12 @@ public class LegacyMats {
return true;
if (block.getType().data == Stairs.class && !((Stairs)block.getBlockData()).isWaterlogged())
return true;
if (block.getType().data == Chain.class && !((Chain)block.getBlockData()).isWaterlogged())
return true;
if (block.getType().data == Candle.class)
return true;
if (block.getType().data == TrapDoor.class && !((TrapDoor)block.getBlockData()).isWaterlogged())
return true;
switch (block.getType()) {
case POINTED_DRIPSTONE:
case SMALL_AMETHYST_BUD:
@@ -459,6 +480,8 @@ public class LegacyMats {
case SOUL_CAMPFIRE:
case CONDUIT:
case LIGHTNING_ROD:
case SCULK_SENSOR:
case SCULK_SHRIEKER:
return true;
default:
}