org.bukkit.Material#BED_BLOCK源码实例Demo

下面列出了org.bukkit.Material#BED_BLOCK 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: BedwarsRel   文件: Utils.java
public static boolean isBedBlock(Block isBed) {
  if (isBed == null) {
    return false;
  }

  return (isBed.getType() == Material.BED || isBed.getType() == Material.BED_BLOCK);
}
 
源代码2 项目: Kettle   文件: Bed.java
/**
 * Default constructor for a bed.
 */
public Bed() {
    super(Material.BED_BLOCK);
}
 
源代码3 项目: BedwarsRel   文件: EntityListener.java
@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);
    }
  }
}
 
 方法所在类
 同类方法