Improvements to block physics checks

This commit is contained in:
mathiascode 2020-02-18 07:11:15 +02:00
parent bf6592f9f9
commit 6694621deb

View file

@ -32,8 +32,12 @@ public final class BlockPhysics implements Listener {
if (event.getBlock().getRelative(face).getType() != event.getBlock().getType()) { if (event.getBlock().getRelative(face).getType() != event.getBlock().getType()) {
return; return;
} }
event.getBlock().setType(Material.AIR, false); if (!event.getBlock().getType().equals(Material.AIR)) {
event.setCancelled(true); event.getBlock().setType(Material.AIR, false);
}
if (!event.isCancelled()) {
event.setCancelled(true);
}
} }
} }
} catch (Exception e) { } catch (Exception e) {
@ -41,20 +45,17 @@ public final class BlockPhysics implements Listener {
} }
} }
/*@EventHandler @EventHandler
void onBlockFade(final BlockFadeEvent event) { void onBlockFade(final BlockFadeEvent event) {
try { try {
for (BlockFace face : blockFaces) { if (event.getBlock().getType() == Material.FIRE) {
if (event.getBlock().getRelative(face).getType() != event.getBlock().getType()) {
return;
}
event.getBlock().setType(Material.AIR, false); event.getBlock().setType(Material.AIR, false);
event.setCancelled(true); event.setCancelled(true);
} }
} catch (Exception e) { } catch (Exception e) {
event.setCancelled(true); event.setCancelled(true);
} }
}*/ }
@EventHandler @EventHandler
void onBlockForm(final BlockFormEvent event) { void onBlockForm(final BlockFormEvent event) {
@ -78,14 +79,15 @@ public final class BlockPhysics implements Listener {
boolean waterFound = false; boolean waterFound = false;
for (BlockFace face : blockFaces) { for (BlockFace face : blockFaces) {
if (event.getBlock().getRelative(face).getType() == Material.LAVA) { if (event.getBlock().getRelative(face).getType() == Material.LAVA && !lavaFound) {
lavaFound = true; lavaFound = true;
} else if (event.getBlock().getRelative(face).getType() == Material.WATER) { } else if (event.getBlock().getRelative(face).getType() == Material.WATER && !waterFound) {
waterFound = true; waterFound = true;
} }
if (lavaFound && waterFound) { if (lavaFound && waterFound) {
event.setCancelled(true); event.setCancelled(true);
return;
} }
} }
} }
@ -113,11 +115,7 @@ public final class BlockPhysics implements Listener {
if (!event.getBlock().getType().isSolid()) { if (!event.getBlock().getType().isSolid()) {
for (BlockFace face : blockFaces) { for (BlockFace face : blockFaces) {
if (event.getBlock().getRelative(face).getType() != event.getBlock().getType()) { event.getBlock().getRelative(face).getType();
return;
}
event.getBlock().setType(Material.AIR, false);
event.setCancelled(true);
} }
} }
} catch (Exception e) { } catch (Exception e) {