Java Code Examples for org.bukkit.Material#BED_BLOCK

The following examples show how to use org.bukkit.Material#BED_BLOCK . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: Utils.java    From BedwarsRel with GNU General Public License v3.0 5 votes vote down vote up
public static boolean isBedBlock(Block isBed) {
  if (isBed == null) {
    return false;
  }

  return (isBed.getType() == Material.BED || isBed.getType() == Material.BED_BLOCK);
}
 
Example 2
Source File: Bed.java    From Kettle with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Default constructor for a bed.
 */
public Bed() {
    super(Material.BED_BLOCK);
}
 
Example 3
Source File: EntityListener.java    From BedwarsRel with GNU General Public License v3.0 4 votes vote down vote up
@EventHandler(priority = EventPriority.HIGHEST)
public void onExplodeDestroy(EntityExplodeEvent eev) {
  if (eev.isCancelled()) {
    return;
  }

  if (eev.getEntity() == null) {
    return;
  }

  if (eev.getEntity().getWorld() == null) {
    return;
  }

  Game game =
      BedwarsRel.getInstance().getGameManager().getGameByLocation(eev.getEntity().getLocation());

  if (game == null) {
    return;
  }

  if (game.getState() == GameState.STOPPED) {
    return;
  }

  Iterator<Block> explodeBlocks = eev.blockList().iterator();
  boolean tntDestroyEnabled =
      BedwarsRel.getInstance().getBooleanConfig("explodes.destroy-worldblocks", false);
  boolean tntDestroyBeds = BedwarsRel
      .getInstance().getBooleanConfig("explodes.destroy-beds", false);

  if (!BedwarsRel.getInstance().getBooleanConfig("explodes.drop-blocks", false)) {
    eev.setYield(0F);
  }

  Material targetMaterial = game.getTargetMaterial();
  while (explodeBlocks.hasNext()) {
    Block exploding = explodeBlocks.next();
    if (!game.getRegion().isInRegion(exploding.getLocation())) {
      explodeBlocks.remove();
      continue;
    }

    if ((!tntDestroyEnabled && !tntDestroyBeds) || (!tntDestroyEnabled && tntDestroyBeds
        && exploding.getType() != Material.BED_BLOCK && exploding.getType() != Material.BED)) {
      if (!game.getRegion().isPlacedBlock(exploding)) {
        if (BedwarsRel.getInstance().isBreakableType(exploding.getType())) {
          game.getRegion().addBreakedBlock(exploding);
          continue;
        }

        explodeBlocks.remove();
      } else {
        game.getRegion().removePlacedBlock(exploding);
      }

      continue;
    }

    if (game.getRegion().isPlacedBlock(exploding)) {
      game.getRegion().removePlacedBlock(exploding);
      continue;
    }

    if (exploding.getType().equals(targetMaterial)) {
      if (!tntDestroyBeds) {
        explodeBlocks.remove();
        continue;
      }

      // only destroyable by tnt
      if (!eev.getEntityType().equals(EntityType.PRIMED_TNT)
          && !eev.getEntityType().equals(EntityType.MINECART_TNT)) {
        explodeBlocks.remove();
        continue;
      }

      // when it wasn't player who ignited the tnt
      TNTPrimed primedTnt = (TNTPrimed) eev.getEntity();
      if (!(primedTnt.getSource() instanceof Player)) {
        explodeBlocks.remove();
        continue;
      }

      Player p = (Player) primedTnt.getSource();
      if (!game.handleDestroyTargetMaterial(p, exploding)) {
        explodeBlocks.remove();
        continue;
      }
    } else {
      game.getRegion().addBreakedBlock(exploding);
    }
  }
}