net.minecraft.util.math.BlockPos#up ( )源码实例Demo

下面列出了net.minecraft.util.math.BlockPos#up ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Cyberware   文件: BlockEngineeringTable.java
@Override
public void onBlockHarvested(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player)
{
	BlockPos blockpos = pos.down();
	BlockPos blockpos1 = pos.up();

	if (player.capabilities.isCreativeMode && state.getValue(HALF) == EnumEngineeringHalf.UPPER && worldIn.getBlockState(blockpos).getBlock() == this)
	{
		worldIn.setBlockToAir(blockpos);
	}

	if (state.getValue(HALF) == EnumEngineeringHalf.LOWER && worldIn.getBlockState(blockpos1).getBlock() == this)
	{
		if (player.capabilities.isCreativeMode)
		{
			worldIn.setBlockToAir(pos);
		}

		worldIn.setBlockToAir(blockpos1);
	}
}
 
源代码2 项目: TFC2   文件: EntityAIWanderHex.java
private static BlockPos moveAboveSolid(BlockPos pos, EntityCreature entity)
{
	if (!entity.world.getBlockState(pos).getMaterial().isSolid())
	{
		return pos;
	}
	else
	{
		BlockPos blockpos;

		for (blockpos = pos.up(); blockpos.getY() < entity.world.getHeight() && entity.world.getBlockState(blockpos).getMaterial().isSolid(); blockpos = blockpos.up())
		{
			;
		}

		return blockpos;
	}
}
 
源代码3 项目: Sakura_mod   文件: WorldGenBamboo.java
@Override
public boolean generate(World worldIn, Random rand, BlockPos position) {
    int i = 9 + rand.nextInt(9);

    for (int i2 = 0; i2 < i; ++i2) {
        BlockPos blockpos = position.up(i2);
        if ((BlockLoader.BAMBOOSHOOT.canBlockStay(worldIn, blockpos)||
        		worldIn.getBlockState(blockpos.down()).getBlock() instanceof BlockPlantBamboo) && 
        (worldIn.isAirBlock(blockpos) || 
        		worldIn.getBlockState(blockpos).getMaterial() == Material.PLANTS
        		&& !(worldIn.getBlockState(blockpos).getBlock() instanceof BlockLeaves))) {
            worldIn.setBlockState(blockpos, BlockLoader.BAMBOO.getDefaultState(), 2);
        }
    }
    return true;
}
 
源代码4 项目: GregTech   文件: SurfaceBlockPopulator.java
@Override
public void populateChunk(World world, int chunkX, int chunkZ, Random random, OreDepositDefinition definition, GridEntryInfo gridEntryInfo) {
    if (world.getWorldType() != WorldType.FLAT) {
        int stonesCount = minIndicatorAmount + (minIndicatorAmount >= maxIndicatorAmount ? 0 : random.nextInt(maxIndicatorAmount - minIndicatorAmount));
        for (int i = 0; i < stonesCount; i++) {
            int randomX = chunkX * 16 + random.nextInt(16);
            int randomZ = chunkZ * 16 + random.nextInt(16);
            BlockPos topBlockPos = new BlockPos(randomX, 0, randomZ);
            topBlockPos = world.getTopSolidOrLiquidBlock(topBlockPos).down();
            IBlockState blockState = world.getBlockState(topBlockPos);
            if (blockState.getBlockFaceShape(world, topBlockPos, EnumFacing.UP) != BlockFaceShape.SOLID ||
                !blockState.isOpaqueCube() || !blockState.isFullBlock())
                continue;
            BlockPos surfaceRockPos = topBlockPos.up();
            world.setBlockState(surfaceRockPos, this.blockState, 16);
        }
    }
}
 
源代码5 项目: the-hallow   文件: LargeSkeletalTreeFeature.java
protected boolean generateBranch(Set<BlockPos> set, ModifiableTestableWorld world, Random random, BlockPos pos, BlockBox mibb, int maxBranchouts, Direction lastDir) {
	int baseHeight = random.nextInt(4) + 2;
	
	for (int int_4 = 0; int_4 < baseHeight; ++int_4) {
		BlockPos blockPos = pos.up(int_4 + 1);
		if (!isSurroundedByAir(world, blockPos, null)) {
			return true;
		}
		addLog(set, world, blockPos, Direction.Axis.Y, mibb);
	}
	
	int int_5 = random.nextInt(4) + 1;
	int int_1 = 8;
	
	if (maxBranchouts > 0)
		for (int int_6 = 0; int_6 < int_5; ++int_6) {
			Direction direction_1 = Direction.Type.HORIZONTAL.random(random);
			if (direction_1 == lastDir) continue;
			BlockPos blockPos_4 = pos.up(baseHeight).offset(direction_1);
			if (Math.abs(blockPos_4.getX() - pos.getX()) < int_1 && Math.abs(blockPos_4.getZ() - pos.getZ()) < int_1 && isAir(world, blockPos_4) && isAir(world, blockPos_4.down()) && isSurroundedByAir(world, blockPos_4, direction_1.getOpposite())) {
				addLog(set, world, blockPos_4, direction_1.getAxis(), mibb);
				generateBranch(set, world, random, blockPos_4, mibb, maxBranchouts - 1, direction_1.getOpposite());
			}
		}
	return true;
}
 
源代码6 项目: GregTech   文件: MetaTileEntityItemCollector.java
@Override
public void update() {
    super.update();

    if(getWorld().isRemote) {
        return;
    }

    boolean isWorkingNow = energyContainer.getEnergyStored() >= getEnergyConsumedPerTick() && isBlockRedstonePowered();

    if (isWorkingNow) {
        energyContainer.removeEnergy(getEnergyConsumedPerTick());
        BlockPos selfPos = getPos();
        if (areaCenterPos == null || areaBoundingBox == null || areaCenterPos.getX() != selfPos.getX() ||
            areaCenterPos.getZ() != selfPos.getZ() || areaCenterPos.getY() != selfPos.getY() + 1) {
            this.areaCenterPos = selfPos.up();
            this.areaBoundingBox = new AxisAlignedBB(areaCenterPos).grow(itemSuckingRange, 1.0, itemSuckingRange);
        }
        moveItemsInEffectRange();
    }

    if(isWorkingNow != isWorking) {
        this.isWorking = isWorkingNow;
        writeCustomData(100, buffer -> buffer.writeBoolean(isWorkingNow));
    }
}
 
源代码7 项目: TofuCraftReload   文件: BlockTofuBase.java
public void grow(World worldIn, Random rand, BlockPos pos, IBlockState state)
{
    BlockPos blockpos = pos.up();

    for (int i = 0; i < 128; ++i)
    {
        BlockPos blockpos1 = blockpos;
        int j = 0;

        while (true)
        {
            if (j >= i / 16)
            {
                if (worldIn.isAirBlock(blockpos1))
                {
                	if (rand.nextInt(8) == 0) 	plantFlower(worldIn, rand, blockpos1);
                }
                break;
            }

            blockpos1 = blockpos1.add(rand.nextInt(3) - 1, (rand.nextInt(3) - 1) * rand.nextInt(3) / 2, rand.nextInt(3) - 1);

            if (!(worldIn.getBlockState(blockpos1.down()).getBlock() instanceof BlockTofuBase) || worldIn.getBlockState(blockpos1).isNormalCube())
            {
                break;
            }

            ++j;
         }
     }
 }
 
源代码8 项目: AdvancedRocketry   文件: BlockPress.java
private boolean shouldBeExtended(World worldIn, BlockPos pos, EnumFacing facing)
{
	for (EnumFacing enumfacing : EnumFacing.values())
	{
		if (enumfacing != facing && worldIn.isSidePowered(pos.offset(enumfacing), enumfacing))
		{
			return true;
		}
	}

	if (worldIn.isSidePowered(pos, EnumFacing.DOWN))
	{
		return true;
	}
	else
	{
		BlockPos blockpos = pos.up();

		for (EnumFacing enumfacing1 : EnumFacing.values())
		{
			if (enumfacing1 != EnumFacing.DOWN && worldIn.isSidePowered(blockpos.offset(enumfacing1), enumfacing1))
			{
				return true;
			}
		}

		return false;
	}
}
 
源代码9 项目: Valkyrien-Skies   文件: BlockValkyriumOre.java
private void tryFallingUp(World worldIn, BlockPos pos) {
    BlockPos downPos = pos.up();
    if ((worldIn.isAirBlock(downPos) || canFallThrough(worldIn.getBlockState(downPos)))
        && pos.getY() >= 0) {
        int i = 32;

        if (!BlockFalling.fallInstantly && worldIn
            .isAreaLoaded(pos.add(-32, -32, -32), pos.add(32, 32, 32))) {
            if (!worldIn.isRemote) {
                // Start falling up
                EntityFallingUpBlock entityfallingblock = new EntityFallingUpBlock(worldIn,
                    (double) pos.getX() + 0.5D, (double) pos.getY(), (double) pos.getZ() + 0.5D,
                    worldIn.getBlockState(pos));
                worldIn.spawnEntity(entityfallingblock);
            }
        } else {
            IBlockState state = worldIn.getBlockState(pos);
            worldIn.setBlockToAir(pos);
            BlockPos blockpos;

            for (blockpos = pos.up(); (worldIn.isAirBlock(blockpos) || canFallThrough(
                worldIn.getBlockState(blockpos))) && blockpos.getY() < 255;
                blockpos = blockpos.up()) {
            }

            if (blockpos.getY() < 255) {
                worldIn.setBlockState(blockpos.down(), state, 3);
            }
        }
    }
}
 
源代码10 项目: CommunityMod   文件: Job.java
/**
 * Alters the location's y-coordinate to be on the next air block touching a non-air block below it,
 * using the same x- and z-coordinates
 * searches up first, then down
 * ALTERS THE PASSED INTLOC. Also returns it.
 */
public static BlockPos groundify(World world, BlockPos loc)
{
	if (loc == null)
	{
		return null;
	}

	int ytemp = loc.getY();
	
	if (ytemp < 2)
	{
		ytemp = 2;
	}
	if (ytemp > 255)
	{
		ytemp = 255;
	}
	
	BlockPos tempLoc = new BlockPos(loc.getX(), ytemp, loc.getZ());
	
	//System.out.println("Groundifying " + tempLoc);

	// go down until found ground
	while (WorldHelper.isAirLikeBlock(world, tempLoc) && tempLoc.getY() > 2)
	{
		//System.out.println("Block at " + tempLoc + " is airblock, moving down");
		tempLoc = tempLoc.down();
	}
	// go up until found air
	while (!WorldHelper.isAirLikeBlock(world, tempLoc) && tempLoc.getY() < 255)
	{
		//System.out.println("Block at " + tempLoc + " is NOT airblock, moving up");
		tempLoc = tempLoc.up();
	}
	
	//System.out.println("Grounded to " + tempLoc);
	
	return tempLoc;
}
 
源代码11 项目: Cyberware   文件: ItemEngineeringTable.java
public static void placeDoor(World worldIn, BlockPos pos, EnumFacing facing, Block door)
{
	BlockPos blockpos = pos.offset(facing.rotateY());
	BlockPos blockpos1 = pos.offset(facing.rotateYCCW());
	int i = (worldIn.getBlockState(blockpos1).isNormalCube() ? 1 : 0) + (worldIn.getBlockState(blockpos1.up()).isNormalCube() ? 1 : 0);
	int j = (worldIn.getBlockState(blockpos).isNormalCube() ? 1 : 0) + (worldIn.getBlockState(blockpos.up()).isNormalCube() ? 1 : 0);
	BlockPos blockpos2 = pos.up();
	
	IBlockState iblockstate = door.getDefaultState().withProperty(BlockEngineeringTable.FACING, facing);
	worldIn.setBlockState(pos, iblockstate.withProperty(BlockEngineeringTable.HALF, BlockEngineeringTable.EnumEngineeringHalf.LOWER), 2);
	worldIn.setBlockState(blockpos2, iblockstate.withProperty(BlockEngineeringTable.HALF, BlockEngineeringTable.EnumEngineeringHalf.UPPER), 2);
	worldIn.notifyNeighborsOfStateChange(pos, door);
	worldIn.notifyNeighborsOfStateChange(blockpos2, door);
}
 
源代码12 项目: TofuCraftReload   文件: WorldGenTofuTrees.java
public boolean generate(World worldIn, Random rand, BlockPos position)
{
    int i = rand.nextInt(3) + 4;
    boolean flag = true;

    if (position.getY() >= 1 && position.getY() + i + 1 <= worldIn.getHeight())
    {
        for (int j = position.getY(); j <= position.getY() + 1 + i; ++j)
        {
            int k = 1;

            if (j == position.getY())
            {
                k = 0;
            }

            if (j >= position.getY() + 1 + i - 2)
            {
                k = 2;
            }

            BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();

            for (int l = position.getX() - k; l <= position.getX() + k && flag; ++l)
            {
                for (int i1 = position.getZ() - k; i1 <= position.getZ() + k && flag; ++i1)
                {
                    if (j >= 0 && j < worldIn.getHeight())
                    {
                        if (!this.isReplaceable(worldIn,blockpos$mutableblockpos.setPos(l, j, i1)))
                        {
                            flag = false;
                        }
                    }
                    else
                    {
                        flag = false;
                    }
                }
            }
        }

        if (!flag)
        {
            return false;
        }
        else
        {
            IBlockState state = worldIn.getBlockState(position.down());
            int j1;
            if (state.getBlock().canSustainPlant(state, worldIn, position.down(), net.minecraft.util.EnumFacing.UP, BlockLoader.TOFU_SAPLING) && position.getY() < worldIn.getHeight() - i - 1)
            {
                state.getBlock().onPlantGrow(state, worldIn, position.down(), position);

                for (int i3 = position.getY() - 3 + i; i3 <= position.getY() + i; ++i3)
                {
                    j1 = i / 3;

                    for (int k1 = position.getX() - j1; k1 <= position.getX() + j1; ++k1)
                    {
                        for (int i2 = position.getZ() - j1; i2 <= position.getZ() + j1; ++i2)
                        {
                            BlockPos blockpos = new BlockPos(k1, i3, i2);
                            state = worldIn.getBlockState(blockpos);

                            if (state.getBlock().isAir(state, worldIn, blockpos) || state.getBlock().isLeaves(state, worldIn, blockpos) || state.getMaterial() == Material.VINE)
                            {
                                this.setBlockAndNotifyAdequately(worldIn, blockpos, BlockLoader.TOFU_LEAVE.getDefaultState());
                            }
                        }
                    }
                }
                
                for (int j3 = 0; j3 < i; ++j3)
                {
                    BlockPos upN = position.up(j3);
                    state = worldIn.getBlockState(upN);

                    if (state.getBlock().isAir(state, worldIn, upN) || state.getBlock().isLeaves(state, worldIn, upN) || state.getMaterial() == Material.VINE)
                    {
                        this.setBlockAndNotifyAdequately(worldIn, position.up(j3), BlockLoader.ISHITOFU.getDefaultState());

                    }
                }

                return true;
            }
            else
            {
                return false;
            }
        }
    }
    else
    {
        return false;
    }
}
 
源代码13 项目: TFC2   文件: ChunkProviderSurface.java
protected void convertRiverBank(ChunkPrimer chunkprimer, BlockPos pos, boolean doAir)
{
	if(pos.getX() >= 0 && pos.getY() >= 0 && pos.getZ() >= 0 && pos.getX() < 16 && pos.getY() < 256 && pos.getZ() < 16)
	{
		IBlockState b = getState(chunkprimer, pos);
		if(Core.isTerrain(b))
		{
			Center closest = islandMap.getClosestCenter(pos.add(this.islandChunkX, 0, this.islandChunkZ));
			int elev = this.convertElevation(closest.getElevation());

			if(closest.hasAttribute(Attribute.River) && 
					(closest.biome == BiomeType.BEACH || closest.biome == BiomeType.MARSH || closest.biome == BiomeType.SWAMP)){return;}
			else
			{
				if(elevationMap[pos.getZ() << 4 | pos.getX()] != elev)
				{
					setState(chunkprimer, pos, TFCBlocks.Stone.getDefaultState().withProperty(BlockGravel.META_PROPERTY, islandMap.getParams().getSurfaceRock()));
					if(!Core.isStone(this.getState(chunkprimer, pos.down())))
					{
						setState(chunkprimer, pos.down(), TFCBlocks.Stone.getDefaultState().withProperty(BlockGravel.META_PROPERTY, islandMap.getParams().getSurfaceRock()));
						if(!Core.isStone(this.getState(chunkprimer, pos.down())))
						{
							setState(chunkprimer, pos.down(), TFCBlocks.Stone.getDefaultState().withProperty(BlockGravel.META_PROPERTY, islandMap.getParams().getSurfaceRock()));
						}
					}
				}
				else
				{
					setState(chunkprimer, pos, TFCBlocks.Gravel.getDefaultState().withProperty(BlockGravel.META_PROPERTY, islandMap.getParams().getSurfaceRock()));
				}
			}

			if(Core.isTerrain(getState(chunkprimer, pos.up(1))))
			{
				if(doAir && Core.isGravel(getState(chunkprimer, pos.up(1))))
				{
					convertRiverBank(chunkprimer, pos.up(1).north(), true);
					convertRiverBank(chunkprimer, pos.up(1).south(), true);
					convertRiverBank(chunkprimer, pos.up(1).east(), true);
					convertRiverBank(chunkprimer, pos.up(1).west(), true);
				}
				while(Core.isTerrain(getState(chunkprimer, pos.up())))
				{
					setState(chunkprimer, pos.up(), Blocks.AIR.getDefaultState());
					pos = pos.up();
				}
			}
		}
	}
}
 
源代码14 项目: Wizardry   文件: TorikkiIceSpike.java
public boolean generate(World worldIn, Random rand, BlockPos position) {
    while (worldIn.isAirBlock(position) && position.getY() > 2) {
        position = position.down();
    }

    if (worldIn.getBlockState(position).getBlock() != Blocks.SNOW) {
        return false;
    } else {
        position = position.up(rand.nextInt(4));
        int i = rand.nextInt(4) + 7;
        int j = i / 4 + rand.nextInt(2);

        if (j > 1 && rand.nextInt(60) == 0) {
            position = position.up(10 + rand.nextInt(30));
        }

        for (int k = 0; k < i; ++k) {
            float f = (1.0F - (float) k / (float) i) * (float) j;
            int l = MathHelper.ceil(f);

            for (int i1 = -l; i1 <= l; ++i1) {
                float f1 = (float) MathHelper.abs(i1) - 0.25F;

                for (int j1 = -l; j1 <= l; ++j1) {
                    float f2 = (float) MathHelper.abs(j1) - 0.25F;

                    if ((i1 == 0 && j1 == 0 || f1 * f1 + f2 * f2 <= f * f) && (i1 != -l && i1 != l && j1 != -l && j1 != l || rand.nextFloat() <= 0.75F)) {
                        IBlockState iblockstate = worldIn.getBlockState(position.add(i1, k, j1));
                        Block block = iblockstate.getBlock();

                        if (iblockstate.getBlock().isAir(iblockstate, worldIn, position.add(i1, k, j1)) || block == Blocks.DIRT || block == Blocks.SNOW || block == Blocks.ICE) {
                            this.setBlockAndNotifyAdequately(worldIn, position.add(i1, k, j1), Blocks.PACKED_ICE.getDefaultState());
                        }

                        if (k != 0 && l > 1) {
                            iblockstate = worldIn.getBlockState(position.add(i1, -k, j1));
                            block = iblockstate.getBlock();

                            if (iblockstate.getBlock().isAir(iblockstate, worldIn, position.add(i1, -k, j1)) || block == Blocks.DIRT || block == Blocks.SNOW || block == Blocks.ICE) {
                                this.setBlockAndNotifyAdequately(worldIn, position.add(i1, -k, j1), Blocks.PACKED_ICE.getDefaultState());
                            }
                        }
                    }
                }
            }
        }

        int k1 = j - 1;

        if (k1 < 0) {
            k1 = 0;
        } else if (k1 > 1) {
            k1 = 1;
        }

        for (int l1 = -k1; l1 <= k1; ++l1) {
            for (int i2 = -k1; i2 <= k1; ++i2) {
                BlockPos blockpos = position.add(l1, -1, i2);
                int j2 = 50;

                if (Math.abs(l1) == 1 && Math.abs(i2) == 1) {
                    j2 = rand.nextInt(5);
                }

                while (blockpos.getY() > 50) {
                    IBlockState iblockstate1 = worldIn.getBlockState(blockpos);
                    Block block1 = iblockstate1.getBlock();

                    if (!iblockstate1.getBlock().isAir(iblockstate1, worldIn, blockpos) && block1 != Blocks.DIRT && block1 != Blocks.SNOW && block1 != Blocks.ICE && block1 != Blocks.PACKED_ICE) {
                        break;
                    }

                    this.setBlockAndNotifyAdequately(worldIn, blockpos, Blocks.PACKED_ICE.getDefaultState());
                    blockpos = blockpos.down();
                    --j2;

                    if (j2 <= 0) {
                        blockpos = blockpos.down(rand.nextInt(5) + 1);
                        j2 = rand.nextInt(5);
                    }
                }
            }
        }

        return true;
    }
}
 
源代码15 项目: TFC2   文件: WorldGenTreesHex.java
protected boolean canGrowHere(World world, BlockPos pos, TreeSchematic schem, int growthStage)
{
	IBlockState ground;
	IBlockState above;
	BlockPos gPos = pos;
	BlockPos aPos = pos.up();
	int radius = Math.max(1, growthStage);
	int count = 0;
	int failCount = 0;

	if(!world.isAirBlock(aPos))
		return false;

	//this should validate the ground
	for(int i = -radius; i <= radius; i++)
	{
		for(int k = -radius; k <= radius; k++)
		{
			count++;
			ground = world.getBlockState(gPos.add(i, 0, k));

			if(schem.getWoodType() != WoodType.Palm && !Core.isSoil(ground))
			{
				return false;
			}
			else if(schem.getWoodType() == WoodType.Palm && !Core.isSoil(ground) && !Core.isSand(ground))
			{
				return false;
			}

			for(int y = 1; y <= schem.getSizeY(); y++)
			{
				if(Core.isNaturalLog(world.getBlockState(gPos.add(0, y, 0))))
					return false;
			}
		}
	}

	/*if(failCount > count * 0.25 )
		return false;*/

	return true;
}
 
源代码16 项目: Sakura_mod   文件: WorldGenMapleTree.java
public boolean generate(World worldIn, Random rand, BlockPos position) {
      int i = rand.nextInt(3) + this.minTreeHeight;
      boolean flag = true;

      if (position.getY() >= 1 && position.getY() + i + 1 <= worldIn.getHeight()) {
          for (int j = position.getY(); j <= position.getY() + 1 + i; ++j) {
              int k = 1;

              if (j == position.getY()) {
                  k = 0;
              }

              if (j >= position.getY() + 1 + i - 2) {
                  k = 2;
              }

              BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();

              for (int l = position.getX() - k; l <= position.getX() + k && flag; ++l) {
                  for (int i1 = position.getZ() - k; i1 <= position.getZ() + k && flag; ++i1) {
                      if (j >= 0 && j < worldIn.getHeight()) {
                          if (!this.isReplaceable(worldIn, blockpos$mutableblockpos.setPos(l, j, i1))) {
                              flag = false;
                          }
                      } else {
                          flag = false;
                      }
                  }
              }
          }

          if (!flag) {
              return false;
          }
	IBlockState state = worldIn.getBlockState(position.down());

	if (state.getBlock().canSustainPlant(state, worldIn, position.down(), net.minecraft.util.EnumFacing.UP, (net.minecraft.block.BlockSapling) Blocks.SAPLING) && position.getY() < worldIn.getHeight() - i - 1) {
	    state.getBlock().onPlantGrow(state, worldIn, position.down(), position);

	    for (int i3 = position.getY() - 3 + i; i3 <= position.getY() + i; ++i3) {
	        int i4 = i3 - (position.getY() + i);
	        int j1 = 1 - i4 / 2;

	        for (int k1 = position.getX() - j1; k1 <= position.getX() + j1; ++k1) {
	            int l1 = k1 - position.getX();

	            for (int i2 = position.getZ() - j1; i2 <= position.getZ() + j1; ++i2) {
	                int j2 = i2 - position.getZ();

	                if (Math.abs(l1) != j1 || Math.abs(j2) != j1 || rand.nextInt(2) != 0 && i4 != 0) {
	                    BlockPos blockpos = new BlockPos(k1, i3, i2);
	                    state = worldIn.getBlockState(blockpos);

	                    if (state.getBlock().isAir(state, worldIn, blockpos) || state.getBlock().isLeaves(state, worldIn, blockpos) || state.getMaterial() == Material.VINE) {
	                        this.setBlockAndNotifyAdequately(worldIn, blockpos, this.metaLeaves);
	                    }
	                }
	            }
	        }
	    }

	    for (int j3 = 0; j3 < i; ++j3) {
	        BlockPos upN = position.up(j3);
	        state = worldIn.getBlockState(upN);

	        if (state.getBlock().isAir(state, worldIn, upN) || state.getBlock().isLeaves(state, worldIn, upN) || state.getMaterial() == Material.VINE) {
	            this.setBlockAndNotifyAdequately(worldIn, position.up(j3), this.metaWood);

	            if (this.generateSap && j3 == 1) {
	                if (worldIn.getBlockState(position.add(0, j3, 0))==this.metaWood) {
	                    this.addSapLog(worldIn, position.add(0, j3, 0));
	                }

	            }
	        }
	    }
	    fallenLeaves(worldIn, position,4,2,4, this.metaFallenLeaves);
	    
	    return true;
	}
	return false;
      }
return false;
  }
 
源代码17 项目: Sakura_mod   文件: WorldGenBigMaple.java
/**
 * Generates a list of leaf nodes for the tree, to be populated by generateLeaves.
 */
void generateLeafNodeList()
{
    this.height = (int)(this.heightLimit * this.heightAttenuation);

    if (this.height >= this.heightLimit)
    {
        this.height = this.heightLimit - 1;
    }

    int i = (int)(1.382D + Math.pow(this.leafDensity * this.heightLimit / 13.0D, 2.0D));

    if (i < 1)
    {
        i = 1;
    }

    int j = this.basePos.getY() + this.height;
    int k = this.heightLimit - this.leafDistanceLimit;
    this.foliageCoords = Lists.<WorldGenBigMaple.FoliageCoordinates>newArrayList();
    this.foliageCoords.add(new WorldGenBigMaple.FoliageCoordinates(this.basePos.up(k), j));

    for (; k >= 0; --k)
    {
        float f = this.layerSize(k);

        if (f >= 0.0F)
        {
            for (int l = 0; l < i; ++l)
            {
                double d0 = this.scaleWidth * f * (this.rand.nextFloat() + 0.328D);
                double d1 = this.rand.nextFloat() * 2.0F * Math.PI;
                double d2 = d0 * Math.sin(d1) + 0.5D;
                double d3 = d0 * Math.cos(d1) + 0.5D;
                BlockPos blockpos = this.basePos.add(d2, k - 1, d3);
                BlockPos blockpos1 = blockpos.up(this.leafDistanceLimit);

                if (this.checkBlockLine(blockpos, blockpos1) == -1)
                {
                    int i1 = this.basePos.getX() - blockpos.getX();
                    int j1 = this.basePos.getZ() - blockpos.getZ();
                    double d4 = blockpos.getY() - Math.sqrt(i1 * i1 + j1 * j1) * this.branchSlope;
                    int k1 = d4 > j ? j : (int)d4;
                    BlockPos blockpos2 = new BlockPos(this.basePos.getX(), k1, this.basePos.getZ());

                    if (this.checkBlockLine(blockpos2, blockpos) == -1)
                    {
                        this.foliageCoords.add(new WorldGenBigMaple.FoliageCoordinates(blockpos, blockpos2.getY()));
                    }
                }
            }
        }
    }
}
 
源代码18 项目: Sakura_mod   文件: ItemFuton.java
@Override
public EnumActionResult onItemUse(EntityPlayer playerIn, World worldIn, BlockPos pos, EnumHand hand,
		EnumFacing facing, float hitX, float hitY, float hitZ) {
	if (worldIn.isRemote) {
		return EnumActionResult.SUCCESS;
	} else if (facing != EnumFacing.UP) {
		return EnumActionResult.FAIL;
	} else {
		IBlockState iblockstate = worldIn.getBlockState(pos);
		Block block = iblockstate.getBlock();
		boolean flag = block.isReplaceable(worldIn, pos);

		if (!flag) {
			pos = pos.up();
		}

		int i = MathHelper.floor(playerIn.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
		EnumFacing enumfacing = EnumFacing.getHorizontal(i);
		BlockPos blockpos = pos.offset(enumfacing);
		ItemStack itemstack = playerIn.getHeldItem(hand);

		if (playerIn.canPlayerEdit(pos, facing, itemstack) && playerIn.canPlayerEdit(blockpos, facing, itemstack)) {
			boolean flag1 = worldIn.getBlockState(blockpos).getBlock().isReplaceable(worldIn, blockpos);
			boolean flag2 = flag || worldIn.isAirBlock(pos);
			boolean flag3 = flag1 || worldIn.isAirBlock(blockpos);

			if (flag2 && flag3 && worldIn.getBlockState(pos.down()).isTopSolid()
					&& worldIn.getBlockState(blockpos.down()).isFullCube()) {
				IBlockState iblockstate1 = BlockLoader.FUTON.getDefaultState()
						.withProperty(BlockFuton.OCCUPIED, Boolean.valueOf(false))
						.withProperty(BlockHorizontal.FACING, enumfacing)
						.withProperty(BlockFuton.PART, BlockFuton.EnumPartType.FOOT);

				if (worldIn.setBlockState(pos, iblockstate1, 11)) {
					IBlockState iblockstate2 = iblockstate1.withProperty(BlockFuton.PART,
							BlockFuton.EnumPartType.HEAD);
					worldIn.setBlockState(blockpos, iblockstate2, 11);
				}

				SoundType soundtype = iblockstate1.getBlock().getSoundType(iblockstate1, worldIn, pos, playerIn);
				worldIn.playSound(null, pos, soundtype.getPlaceSound(), SoundCategory.BLOCKS,
						(soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F);
				itemstack.shrink(1);
				return EnumActionResult.SUCCESS;
			}
			return EnumActionResult.FAIL;
		}
		return EnumActionResult.FAIL;
	}
}
 
源代码19 项目: AdvancedRocketry   文件: MapGenLander.java
@SubscribeEvent
public void populateChunkPostEvent(PopulateChunkEvent.Post event) {
	World worldIn = event.getWorld();
	BlockPos position = new BlockPos(16*event.getChunkX() + 3,0, 16*event.getChunkZ() + 11);

	if(DimensionManager.getInstance().getDimensionProperties(worldIn.provider.getDimension()).getName().equals("Luna") && position.getX() == 67 && position.getZ() == 2347) {

		position = worldIn.getHeight(position).down();
		
		worldIn.setBlockState(position.add(0, 0, 3), Blocks.STONE_SLAB.getDefaultState().withProperty(BlockSlab.HALF, EnumBlockHalf.TOP));
		worldIn.setBlockState(position.add(0, 0, -3), Blocks.STONE_SLAB.getDefaultState().withProperty(BlockSlab.HALF, EnumBlockHalf.TOP));
		worldIn.setBlockState(position.add(3, 0, 0), Blocks.STONE_SLAB.getDefaultState().withProperty(BlockSlab.HALF, EnumBlockHalf.TOP));
		worldIn.setBlockState(position.add(-3, 0, 0), Blocks.STONE_SLAB.getDefaultState().withProperty(BlockSlab.HALF, EnumBlockHalf.TOP));
		
		position = position.up();

		worldIn.setBlockState(position, AdvancedRocketryBlocks.blockEngine.getDefaultState());
		worldIn.setBlockState(position.add(0, 0, 3), Blocks.IRON_BARS.getDefaultState());
		worldIn.setBlockState(position.add(0, 0, -3), Blocks.IRON_BARS.getDefaultState());
		worldIn.setBlockState(position.add(3, 0, 0), Blocks.IRON_BARS.getDefaultState());
		worldIn.setBlockState(position.add(-3, 0, 0), Blocks.IRON_BARS.getDefaultState());

		position = position.up();
		worldIn.setBlockState(position.add(0, 0, 3), Blocks.IRON_BARS.getDefaultState());
		worldIn.setBlockState(position.add(0, 0, -3), Blocks.IRON_BARS.getDefaultState());
		worldIn.setBlockState(position.add(3, 0, 0), Blocks.IRON_BARS.getDefaultState());
		worldIn.setBlockState(position.add(-3, 0, 0), Blocks.IRON_BARS.getDefaultState());

		for(int x = -1; x <= 1; x++ ) {
			worldIn.setBlockState(position.add(-2, 0, x), Blocks.GOLD_BLOCK.getDefaultState());
			worldIn.setBlockState(position.add(2, 0, x), Blocks.GOLD_BLOCK.getDefaultState());
			worldIn.setBlockState(position.add(x, 0, -2), Blocks.GOLD_BLOCK.getDefaultState());
			worldIn.setBlockState(position.add(x, 0, 2), Blocks.GOLD_BLOCK.getDefaultState());
			for(int z = -1; z <= 1; z++) {
				worldIn.setBlockState(position.add(x, 0, z), Blocks.IRON_BLOCK.getDefaultState());
			}
		}

		position = position.up();
		worldIn.setBlockState(position.add(0, 0, 3), Blocks.IRON_BARS.getDefaultState());
		worldIn.setBlockState(position.add(0, 0, -3), Blocks.IRON_BARS.getDefaultState());
		worldIn.setBlockState(position.add(3, 0, 0), Blocks.IRON_BARS.getDefaultState());
		worldIn.setBlockState(position.add(-3, 0, 0), Blocks.IRON_BARS.getDefaultState());

		for(int x = -1; x <= 1; x++ ) {
			worldIn.setBlockState(position.add(-2, 0, x), Blocks.GOLD_BLOCK.getDefaultState());
			worldIn.setBlockState(position.add(2, 0, x), Blocks.GOLD_BLOCK.getDefaultState());
			worldIn.setBlockState(position.add(x, 0, -2), Blocks.GOLD_BLOCK.getDefaultState());
			worldIn.setBlockState(position.add(x, 0, 2), Blocks.GOLD_BLOCK.getDefaultState());
		}

		worldIn.setBlockState(position.add(0, 0, 1), Blocks.IRON_BLOCK.getDefaultState());
		worldIn.setBlockState(position.add(1, 0, 0), Blocks.IRON_BLOCK.getDefaultState());
		worldIn.setBlockState(position.add(0, 0, -1), Blocks.IRON_BLOCK.getDefaultState());
		worldIn.setBlockState(position.add(-1, 0, 0), Blocks.IRON_BLOCK.getDefaultState());

		position = worldIn.getHeight(position.add(10,0,15));

		for(int x = 0; x <= 4; x++ ) 
			worldIn.setBlockState(position.add(0,x,0), Blocks.IRON_BARS.getDefaultState());

		worldIn.setBlockState(position.add(1,4,0), Blocks.IRON_BARS.getDefaultState());
		worldIn.setBlockState(position.add(2,4,0), Blocks.IRON_BARS.getDefaultState());
	}
}
 
源代码20 项目: Production-Line   文件: ItemWaterHyacinth.java
@Nonnull
public ActionResult<ItemStack> onItemRightClick(@Nonnull ItemStack itemStackIn, World worldIn, EntityPlayer playerIn, EnumHand hand) {
    RayTraceResult raytraceresult = this.rayTrace(worldIn, playerIn, true);

    if (raytraceresult == null) {
        return new ActionResult<>(EnumActionResult.PASS, itemStackIn);
    } else {
        if (raytraceresult.typeOfHit == RayTraceResult.Type.BLOCK) {
            BlockPos blockpos = raytraceresult.getBlockPos();

            if (!worldIn.isBlockModifiable(playerIn, blockpos) || !playerIn.canPlayerEdit(blockpos.offset(raytraceresult.sideHit), raytraceresult.sideHit, itemStackIn)) {
                return new ActionResult<>(EnumActionResult.FAIL, itemStackIn);
            }

            BlockPos blockpos1 = blockpos.up();
            IBlockState iblockstate = worldIn.getBlockState(blockpos);

            if (iblockstate.getMaterial() == Material.WATER && iblockstate.getValue(BlockLiquid.LEVEL) == 0 && worldIn.isAirBlock(blockpos1)) {
                // special case for handling block placement with water lilies
                net.minecraftforge.common.util.BlockSnapshot blocksnapshot = net.minecraftforge.common.util.BlockSnapshot.getBlockSnapshot(worldIn, blockpos1);
                worldIn.setBlockState(blockpos1, PLBlocks.waterHyacinth.getDefaultState());
                if (net.minecraftforge.event.ForgeEventFactory.onPlayerBlockPlace(playerIn, blocksnapshot, net.minecraft.util.EnumFacing.UP).isCanceled()) {
                    blocksnapshot.restore(true, false);
                    return new ActionResult<>(EnumActionResult.FAIL, itemStackIn);
                }

                worldIn.setBlockState(blockpos1, PLBlocks.waterHyacinth.getDefaultState(), 11);

                if (!playerIn.capabilities.isCreativeMode) {
                    --itemStackIn.stackSize;
                }

                playerIn.addStat(StatList.getObjectUseStats(this));
                worldIn.playSound(playerIn, blockpos, SoundEvents.BLOCK_WATERLILY_PLACE, SoundCategory.BLOCKS, 1.0F, 1.0F);
                return new ActionResult<>(EnumActionResult.SUCCESS, itemStackIn);
            }
        }

        return new ActionResult<>(EnumActionResult.FAIL, itemStackIn);
    }
}