コード例 #1
0
ファイル: FilterEvents.java プロジェクト: Prodigy4532/Rixor
 @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);
   }
 }
コード例 #2
0
 @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);
   }
 }
コード例 #3
0
  @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; }
     */
  }
コード例 #4
0
  /** 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;
    }
  }