diff options
author | David Panić <david@panic.tk> | 2019-01-07 21:20:22 +0100 |
---|---|---|
committer | David Panić <david@panic.tk> | 2019-01-07 21:20:22 +0100 |
commit | 6b7f687c079ab3ba6b12d9c356b8d183b7995ddc (patch) | |
tree | 20bff464b3040b76bd1f683b9a744dee105208c4 | |
parent | 89ac9cd907adf057156f0f299e2d59ba240f1c65 (diff) |
Fixed water flow
-rw-r--r-- | src/main/java/com/redstoner/modules/misc/Misc.java | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/main/java/com/redstoner/modules/misc/Misc.java b/src/main/java/com/redstoner/modules/misc/Misc.java index c773e6b..c01c34a 100644 --- a/src/main/java/com/redstoner/modules/misc/Misc.java +++ b/src/main/java/com/redstoner/modules/misc/Misc.java @@ -13,6 +13,9 @@ import net.nemez.chatapi.click.Message; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.data.BlockData; +import org.bukkit.block.data.Waterlogged; import org.bukkit.command.CommandSender; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; @@ -86,19 +89,26 @@ public class Misc implements Module, Listener { } } + private static final Material[] LIQUID_FLOW_EXCEPTIONS = { + Material.AIR, + Material.CAVE_AIR, + Material.VOID_AIR + }; + // Disables water and lava breaking stuff @EventHandler public void onLiquidFlow(BlockFromToEvent event) { - Material m = event.getToBlock().getType(); - - switch (m) { - case AIR: - case WATER: - case LAVA: - return; - default: { - event.setCancelled(true); - } + Block toBlock = event.getToBlock(); + Material m = toBlock.getType(); + + for (Material exception : LIQUID_FLOW_EXCEPTIONS) { + if (m == exception) return; + } + + BlockData data = toBlock.getBlockData(); + + if (!(data instanceof Waterlogged)) { + event.setCancelled(true); } } |