@Override public boolean prepareBlock(@Nonnull IFarmer farm, @Nonnull BlockPos pos, @Nonnull Block block, @Nonnull IBlockState state) { final ItemStack seed = farm.getSeedTypeInSuppliesFor(pos); final EntityPlayerMP player = farm.getFakePlayer(); final World world = farm.getWorld(); if (canPlant(seed) && isValidPlantingSpot(world, pos) && player.canPlayerEdit(pos, EnumFacing.UP, seed) && world.mayPlace(Blocks.CHORUS_FLOWER, pos, false, EnumFacing.UP, (Entity) null)) { IBlockState iblockstate1 = Blocks.CHORUS_FLOWER.getDefaultState().withProperty(BlockChorusFlower.AGE, 0); IBlockState oldState = world.getBlockState(pos); if (placeBlockAt(seed, player, world, pos, iblockstate1)) { if (Prep.isValid(farm.takeSeedFromSupplies(pos))) { SoundType soundtype = world.getBlockState(pos).getBlock().getSoundType(world.getBlockState(pos), world, pos, player); world.playSound(player, pos, soundtype.getPlaceSound(), SoundCategory.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F); return true; } else { world.setBlockState(pos, oldState, 3); } } } return false; }
boolean collect(@Nonnull BlockPos pos, @Nonnull EnumFacing from) { IBlockState state = farm.getWorld().getBlockState(pos); if (state.getBlock() == Blocks.CHORUS_PLANT) { boolean isNeeded = false; NNIterator<EnumFacing> iterator = GROW_DIRECTIONS.iterator(); while (iterator.hasNext()) { EnumFacing side = iterator.next(); if (side != from) { isNeeded |= collect(pos.offset(side), side.getOpposite()); } } if (!isNeeded) { stemsToHarvest.add(pos); } return isNeeded; } else if (state.getBlock() == Blocks.CHORUS_FLOWER) { if (state.getValue(BlockChorusFlower.AGE) == 5) { flowersToHarvest.add(pos); return false; } return true; } return false; }
public void populate(int x, int z) { BlockFalling.fallInstantly = true; BlockPos blockpos = new BlockPos(x * 16, 0, z * 16); if (this.mapFeaturesEnabled) { this.endCityGen.generateStructure(this.worldObj, this.rand, new ChunkPos(x, z)); } this.worldObj.getBiome(blockpos.add(16, 0, 16)).decorate(this.worldObj, this.worldObj.rand, blockpos); long i = (long)x * (long)x + (long)z * (long)z; if (i > 4096L) { float f = this.getIslandHeightValue(x, z, 1, 1); if (f < -20.0F && this.rand.nextInt(14) == 0) { this.endIslands.generate(this.worldObj, this.rand, blockpos.add(this.rand.nextInt(16) + 8, 55 + this.rand.nextInt(16), this.rand.nextInt(16) + 8)); if (this.rand.nextInt(4) == 0) { this.endIslands.generate(this.worldObj, this.rand, blockpos.add(this.rand.nextInt(16) + 8, 55 + this.rand.nextInt(16), this.rand.nextInt(16) + 8)); } } if (this.getIslandHeightValue(x, z, 1, 1) > 40.0F) { int j = this.rand.nextInt(5); for (int k = 0; k < j; ++k) { int l = this.rand.nextInt(16) + 8; int i1 = this.rand.nextInt(16) + 8; int j1 = this.worldObj.getHeight(blockpos.add(l, 0, i1)).getY(); if (j1 > 0) { int k1 = j1 - 1; if (this.worldObj.isAirBlock(blockpos.add(l, k1 + 1, i1)) && this.worldObj.getBlockState(blockpos.add(l, k1, i1)).getBlock() == Blocks.END_STONE) { BlockChorusFlower.generatePlant(this.worldObj, blockpos.add(l, k1 + 1, i1), this.rand, 8); } } } if (this.rand.nextInt(700) == 0) { int l1 = this.rand.nextInt(16) + 8; int i2 = this.rand.nextInt(16) + 8; int j2 = this.worldObj.getHeight(blockpos.add(l1, 0, i2)).getY(); if (j2 > 0) { int k2 = j2 + 3 + this.rand.nextInt(7); BlockPos blockpos1 = blockpos.add(l1, k2, i2); (new WorldGenEndGateway()).generate(this.worldObj, this.rand, blockpos1); TileEntity tileentity = this.worldObj.getTileEntity(blockpos1); if (tileentity instanceof TileEntityEndGateway) { TileEntityEndGateway tileentityendgateway = (TileEntityEndGateway)tileentity; tileentityendgateway.func_190603_b(this.field_191061_n); } } } } } BlockFalling.fallInstantly = false; }
public void populate(int x, int z) { BlockFalling.fallInstantly = true; net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(true, this, this.worldObj, this.rand, x, z, false); BlockPos blockpos = new BlockPos(x * 16, 0, z * 16); if (this.mapFeaturesEnabled) { this.endCityGen.generateStructure(this.worldObj, this.rand, new ChunkPos(x, z)); } this.worldObj.getBiome(blockpos.add(16, 0, 16)).decorate(this.worldObj, this.worldObj.rand, blockpos); long i = (long)x * (long)x + (long)z * (long)z; if (i > 4096L) { float f = this.getIslandHeightValue(x, z, 1, 1); if (f < -20.0F && this.rand.nextInt(14) == 0) { this.endIslands.generate(this.worldObj, this.rand, blockpos.add(this.rand.nextInt(16) + 8, 55 + this.rand.nextInt(16), this.rand.nextInt(16) + 8)); if (this.rand.nextInt(4) == 0) { this.endIslands.generate(this.worldObj, this.rand, blockpos.add(this.rand.nextInt(16) + 8, 55 + this.rand.nextInt(16), this.rand.nextInt(16) + 8)); } } if (this.getIslandHeightValue(x, z, 1, 1) > 40.0F) { int j = this.rand.nextInt(5); for (int k = 0; k < j; ++k) { int l = this.rand.nextInt(16) + 8; int i1 = this.rand.nextInt(16) + 8; int j1 = this.worldObj.getHeight(blockpos.add(l, 0, i1)).getY(); if (j1 > 0) { int k1 = j1 - 1; if (this.worldObj.isAirBlock(blockpos.add(l, k1 + 1, i1)) && this.worldObj.getBlockState(blockpos.add(l, k1, i1)).getBlock() == Blocks.END_STONE) { BlockChorusFlower.generatePlant(this.worldObj, blockpos.add(l, k1 + 1, i1), this.rand, 8); } } } } } net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(false, this, this.worldObj, this.rand, x, z, false); BlockFalling.fallInstantly = false; }