/** get ancestor with give blockType, starting from itself */
 public CourseComponent getAncestor(EnumSet<BlockType> types) {
   if (types.contains(type)) return this;
   IBlock ancestor = parent;
   if (ancestor == null) return null;
   do {
     if (types.contains(ancestor.getType())) return (CourseComponent) ancestor;
   } while ((ancestor = ancestor.getParent()) != null);
   return null;
 }
  /**
   * get the ancestor based on level, level = 0, means itself. if level is out of the boundary, just
   * return the toppest one
   *
   * @param level
   * @return it will never return null.
   */
  public CourseComponent getAncestor(int level) {
    if (parent == null || level == 0) return this;

    IBlock root = parent;
    while (level != 0 && root.getParent() != null) {
      root = root.getParent();
      level--;
    }
    return (CourseComponent) root;
  }
  protected int getRedstonePower(World world, BlockPos pos, IBlockState state) {
    int var4 = super.getRedstonePower(world, pos, state);
    EnumDirection var5 = state.getValue(DIRECTION);
    BlockPos var6 = pos.offset(var5);
    IBlock var7 = world.getBlockState(var6).getBlock();

    if (var7.hasComparatorInputOverride()) {
      var4 = var7.getComparatorInputOverride(world, var6);
    } else if (var4 < 15 && var7.isNormalCube()) {
      var6 = var6.offset(var5);
      var7 = world.getBlockState(var6).getBlock();

      if (var7.hasComparatorInputOverride()) {
        var4 = var7.getComparatorInputOverride(world, var6);
      } else if (var7.getMaterial() == Material.air) {
        EntityItemFrame var8 = this.func_176461_a(world, var5, var6);

        if (var8 != null) {
          var4 = var8.func_174866_q();
        }
      }
    }

    return var4;
  }
示例#4
0
 private void removeBlockMeta(IBlock b) {
   b.getBlock().removeMetadata(IBlock.blockmeta, InterfacesPlugin.INSTANCE);
 }