@EventHandler(priority = EventPriority.LOW) public void onBlockFromTo(BlockFromToEvent event) { Map map = Rixor.getRotation().getSlot().getMap(); if (event.getToBlock().getType() == Material.WATER) { return; } if (event.getToBlock().getType() != event.getBlock().getType()) { BlockChangeEvent change = new BlockChangeEvent( event, map, null, event.getBlock().getState(), event.getToBlock().getState()); Rixor.callEvent(change); } }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockFromTo(BlockFromToEvent event) { ZoneManager manager = m_plugin.getZoneManager(); if (manager.zoneExists(event.getBlock().getLocation())) { event.setCancelled(true); } }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockFromTo(final BlockFromToEvent event) { final ProtectHolder settings = prot.getSettings(); final Block block = event.getBlock(); if (block.getType() == Material.WATER || block.getType() == Material.STATIONARY_WATER) { event.setCancelled(settings.getData().getPrevent().isWaterFlow()); return; } if (block.getType() == Material.LAVA || block.getType() == Material.STATIONARY_LAVA) { event.setCancelled(settings.getData().getPrevent().isLavaFlow()); } // TODO: Test if this still works /* * if (block.getType() == Material.AIR) { * event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_water_bucket_flow)); return; } */ }
/** Called when fluids flow. */ @Override public void onBlockFromTo(BlockFromToEvent event) { if (event.isCancelled()) { return; } World world = event.getBlock().getWorld(); Block blockFrom = event.getBlock(); Block blockTo = event.getToBlock(); boolean isWater = blockFrom.getTypeId() == 8 || blockFrom.getTypeId() == 9; boolean isLava = blockFrom.getTypeId() == 10 || blockFrom.getTypeId() == 11; ConfigurationManager cfg = plugin.getGlobalConfiguration(); WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); if (wcfg.simulateSponge && isWater) { int ox = blockTo.getX(); int oy = blockTo.getY(); int oz = blockTo.getZ(); for (int cx = -wcfg.spongeRadius; cx <= wcfg.spongeRadius; cx++) { for (int cy = -wcfg.spongeRadius; cy <= wcfg.spongeRadius; cy++) { for (int cz = -wcfg.spongeRadius; cz <= wcfg.spongeRadius; cz++) { Block sponge = world.getBlockAt(ox + cx, oy + cy, oz + cz); if (sponge.getTypeId() == 19 && (!wcfg.redstoneSponges || !sponge.isBlockIndirectlyPowered())) { event.setCancelled(true); return; } } } } } /*if (plugin.classicWater && isWater) { int blockBelow = blockFrom.getRelative(0, -1, 0).getTypeId(); if (blockBelow != 0 && blockBelow != 8 && blockBelow != 9) { blockFrom.setTypeId(9); if (blockTo.getTypeId() == 0) { blockTo.setTypeId(9); } return; } }*/ // Check the fluid block (from) whether it is air. // If so and the target block is protected, cancel the event if (wcfg.preventWaterDamage.size() > 0) { int targetId = blockTo.getTypeId(); if ((blockFrom.getTypeId() == 0 || isWater) && wcfg.preventWaterDamage.contains(targetId)) { event.setCancelled(true); return; } } if (wcfg.allowedLavaSpreadOver.size() > 0 && isLava) { int targetId = blockTo.getRelative(0, -1, 0).getTypeId(); if (!wcfg.allowedLavaSpreadOver.contains(targetId)) { event.setCancelled(true); return; } } if (wcfg.highFreqFlags && isWater && !plugin .getGlobalRegionManager() .allows(DefaultFlag.WATER_FLOW, blockFrom.getLocation())) { event.setCancelled(true); return; } if (wcfg.highFreqFlags && isLava && !plugin .getGlobalRegionManager() .allows(DefaultFlag.LAVA_FLOW, blockFrom.getLocation())) { event.setCancelled(true); return; } }