From 91cb1183c1a0b4d8fce129df2ca76583c0f4fee1 Mon Sep 17 00:00:00 2001 From: Matt Caughey Date: Thu, 19 Sep 2013 18:18:50 -0400 Subject: [PATCH] Added 3 new flowers, Tropics sub-biome, tweaked Tropics biome --- common/biomesoplenty/api/Biomes.java | 3 + common/biomesoplenty/api/BlockReferences.java | 4 + common/biomesoplenty/api/Blocks.java | 1 + .../biomes/BiomeDecoratorBOP.java | 36 +++ .../biomes/BiomeGenBirchForest.java | 1 + .../biomesoplenty/biomes/BiomeGenTropics.java | 3 +- .../biomes/nether/BiomeGenNetherBase.java | 1 + .../biomes/nether/BiomeGenNetherGarden.java | 1 + .../biomes/nether/BiomeGenNetherLava.java | 1 + .../biomesoplenty/blocks/BlockBOPFlower2.java | 206 ++++++++++++++++++ .../configuration/BOPBiomes.java | 8 +- .../configuration/BOPBlocks.java | 4 + .../configfile/BOPConfigurationIDs.java | 5 + .../integration/ForestryIntegration.java | 2 + .../integration/ThaumcraftIntegration.java | 4 + .../itemblocks/ItemBlockFlower2.java | 118 ++++++++++ .../world/layer/BiomeLayerSub.java | 1 + resources/assets/biomesoplenty/lang/en_US.xml | 4 + .../textures/blocks/hibiscus.png | Bin 0 -> 351 bytes .../textures/blocks/lilyofthevalley.png | Bin 0 -> 461 bytes 20 files changed, 401 insertions(+), 2 deletions(-) create mode 100644 common/biomesoplenty/blocks/BlockBOPFlower2.java create mode 100644 common/biomesoplenty/itemblocks/ItemBlockFlower2.java create mode 100644 resources/assets/biomesoplenty/textures/blocks/hibiscus.png create mode 100644 resources/assets/biomesoplenty/textures/blocks/lilyofthevalley.png diff --git a/common/biomesoplenty/api/Biomes.java b/common/biomesoplenty/api/Biomes.java index 48321ab51..796934e4c 100644 --- a/common/biomesoplenty/api/Biomes.java +++ b/common/biomesoplenty/api/Biomes.java @@ -113,7 +113,10 @@ public class Biomes public static Optional timber = Optional.absent(); public static Optional timberThin = Optional.absent(); public static Optional tropicalRainforest = Optional.absent(); + public static Optional tropics = Optional.absent(); + public static Optional tropicsMountain = Optional.absent(); + public static Optional tundra = Optional.absent(); public static Optional volcano = Optional.absent(); public static Optional wasteland = Optional.absent(); diff --git a/common/biomesoplenty/api/BlockReferences.java b/common/biomesoplenty/api/BlockReferences.java index dc4ad9a5c..32c73e59f 100644 --- a/common/biomesoplenty/api/BlockReferences.java +++ b/common/biomesoplenty/api/BlockReferences.java @@ -181,6 +181,10 @@ public class BlockReferences { aloe (Blocks.flowers, 12), sunflower (Blocks.flowers, 13), dandelion (Blocks.flowers, 15), + + hibiscus (Blocks.flowers2, 0), + lilyofthevalley (Blocks.flowers2, 1), + burningblossom (Blocks.flowers2, 2), ; public Optional block; diff --git a/common/biomesoplenty/api/Blocks.java b/common/biomesoplenty/api/Blocks.java index b32483a0c..b4e8c5a76 100644 --- a/common/biomesoplenty/api/Blocks.java +++ b/common/biomesoplenty/api/Blocks.java @@ -64,6 +64,7 @@ public class Blocks // Plants public static Optional flowers = Optional.absent(); + public static Optional flowers2 = Optional.absent(); public static Optional mushrooms = Optional.absent(); public static Optional coral = Optional.absent(); public static Optional leaves1 = Optional.absent(); diff --git a/common/biomesoplenty/biomes/BiomeDecoratorBOP.java b/common/biomesoplenty/biomes/BiomeDecoratorBOP.java index 5fa6ffa31..3a576ea0c 100644 --- a/common/biomesoplenty/biomes/BiomeDecoratorBOP.java +++ b/common/biomesoplenty/biomes/BiomeDecoratorBOP.java @@ -219,6 +219,9 @@ public class BiomeDecoratorBOP extends BiomeDecorator public WorldGenerator graveGen; public WorldGenerator pumpkinAltGen; public WorldGenerator coralGen; + public WorldGenerator hibiscusGen; + public WorldGenerator lilyOfTheValleyGen; + public WorldGenerator burningBlossomGen; public WorldGenerator boneSpineGen; public WorldGenerator boneSpine2Gen; @@ -304,6 +307,9 @@ public class BiomeDecoratorBOP extends BiomeDecorator public int gravesPerChunk; public int pumpkinsPerChunk; public int coralPerChunk; + public int hibiscusPerChunk; + public int lilyOfTheValleysPerChunk; + public int burningBlossomsPerChunk; public int boneSpinesPerChunk; public int boneSpines2PerChunk; @@ -453,6 +459,9 @@ public class BiomeDecoratorBOP extends BiomeDecorator tinyCactusGen = new WorldGenBOPFlowers(Blocks.plants.get().blockID, 12); aloeGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 12); coralGen = new WorldGenCoral(Blocks.coral.get().blockID, 4); + hibiscusGen = new WorldGenBOPFlowers(Blocks.flowers2.get().blockID, 0); + lilyOfTheValleyGen = new WorldGenBOPFlowers(Blocks.flowers2.get().blockID, 1); + burningBlossomGen = new WorldGenBOPFlowers(Blocks.flowers2.get().blockID, 2); lilyflowerGen = new WorldGenLilyflower(); deathbloomGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 2); hydrangeaGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 4); @@ -578,6 +587,9 @@ public class BiomeDecoratorBOP extends BiomeDecorator gravesPerChunk = 0; pumpkinsPerChunk = 0; coralPerChunk = 0; + hibiscusPerChunk = 0; + lilyOfTheValleysPerChunk = 0; + burningBlossomsPerChunk = 0; generateLakes = true; generateAsh = false; generateMycelium = false; @@ -1098,6 +1110,30 @@ public class BiomeDecoratorBOP extends BiomeDecorator var5 = chunk_Z + randomGenerator.nextInt(16) + 8; plantBlueGen.generate(currentWorld, randomGenerator, var3, var4, var5); } + + for (var2 = 0; var2 < hibiscusPerChunk; ++var2) + { + var3 = chunk_X + randomGenerator.nextInt(16) + 8; + var4 = randomGenerator.nextInt(256); + var5 = chunk_Z + randomGenerator.nextInt(16) + 8; + hibiscusGen.generate(currentWorld, randomGenerator, var3, var4, var5); + } + + for (var2 = 0; var2 < lilyOfTheValleysPerChunk; ++var2) + { + var3 = chunk_X + randomGenerator.nextInt(16) + 8; + var4 = randomGenerator.nextInt(256); + var5 = chunk_Z + randomGenerator.nextInt(16) + 8; + lilyOfTheValleyGen.generate(currentWorld, randomGenerator, var3, var4, var5); + } + + for (var2 = 0; var2 < burningBlossomsPerChunk; ++var2) + { + var3 = chunk_X + randomGenerator.nextInt(16) + 8; + var4 = randomGenerator.nextInt(256); + var5 = chunk_Z + randomGenerator.nextInt(16) + 8; + burningBlossomGen.generate(currentWorld, randomGenerator, var3, var4, var5); + } for (var2 = 0; var2 < hydrangeasPerChunk; ++var2) { diff --git a/common/biomesoplenty/biomes/BiomeGenBirchForest.java b/common/biomesoplenty/biomes/BiomeGenBirchForest.java index 5452f98b2..b67581cf1 100644 --- a/common/biomesoplenty/biomes/BiomeGenBirchForest.java +++ b/common/biomesoplenty/biomes/BiomeGenBirchForest.java @@ -23,6 +23,7 @@ public class BiomeGenBirchForest extends BiomeGenBase customBiomeDecorator.flowersPerChunk = -999; customBiomeDecorator.tinyFlowersPerChunk = 6; customBiomeDecorator.poisonIvyPerChunk = 3; + customBiomeDecorator.lilyOfTheValleysPerChunk = 15; } /** diff --git a/common/biomesoplenty/biomes/BiomeGenTropics.java b/common/biomesoplenty/biomes/BiomeGenTropics.java index 061d0c885..e703a86a6 100644 --- a/common/biomesoplenty/biomes/BiomeGenTropics.java +++ b/common/biomesoplenty/biomes/BiomeGenTropics.java @@ -24,7 +24,7 @@ public class BiomeGenTropics extends BiomeGenBase super(par1); theBiomeDecorator = new BiomeDecoratorBOP(this); customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - customBiomeDecorator.treesPerChunk = 8; + customBiomeDecorator.treesPerChunk = 4; customBiomeDecorator.grassPerChunk = 7; customBiomeDecorator.flowersPerChunk = 10; customBiomeDecorator.sandPerChunk = 50; @@ -32,6 +32,7 @@ public class BiomeGenTropics extends BiomeGenBase customBiomeDecorator.orangeFlowersPerChunk = 10; customBiomeDecorator.whiteFlowersPerChunk = 4; customBiomeDecorator.sunflowersPerChunk = 2; + customBiomeDecorator.hibiscusPerChunk = 45; customBiomeDecorator.generatePumpkins = false; spawnableMonsterList.add(new SpawnListEntry(EntityJungleSpider.class, 12, 6, 6)); spawnableCreatureList.clear(); diff --git a/common/biomesoplenty/biomes/nether/BiomeGenNetherBase.java b/common/biomesoplenty/biomes/nether/BiomeGenNetherBase.java index 87bcf7d3f..421995690 100644 --- a/common/biomesoplenty/biomes/nether/BiomeGenNetherBase.java +++ b/common/biomesoplenty/biomes/nether/BiomeGenNetherBase.java @@ -20,6 +20,7 @@ public class BiomeGenNetherBase extends BiomeGenBase topBlock = (byte)Block.netherrack.blockID; fillerBlock = (byte)Block.netherrack.blockID; customBiomeDecorator.gravesPerChunk = 1; + customBiomeDecorator.burningBlossomsPerChunk = 1; spawnableMonsterList.clear(); spawnableCreatureList.clear(); spawnableWaterCreatureList.clear(); diff --git a/common/biomesoplenty/biomes/nether/BiomeGenNetherGarden.java b/common/biomesoplenty/biomes/nether/BiomeGenNetherGarden.java index 43894089d..ff7e0b1e6 100644 --- a/common/biomesoplenty/biomes/nether/BiomeGenNetherGarden.java +++ b/common/biomesoplenty/biomes/nether/BiomeGenNetherGarden.java @@ -32,6 +32,7 @@ public class BiomeGenNetherGarden extends BiomeGenBase customBiomeDecorator.glowshroomsPerChunk = 3; customBiomeDecorator.toadstoolsPerChunk = 5; customBiomeDecorator.gravesPerChunk = 1; + customBiomeDecorator.burningBlossomsPerChunk = 8; spawnableMonsterList.clear(); spawnableCreatureList.clear(); spawnableWaterCreatureList.clear(); diff --git a/common/biomesoplenty/biomes/nether/BiomeGenNetherLava.java b/common/biomesoplenty/biomes/nether/BiomeGenNetherLava.java index d0010b874..72cb9b212 100644 --- a/common/biomesoplenty/biomes/nether/BiomeGenNetherLava.java +++ b/common/biomesoplenty/biomes/nether/BiomeGenNetherLava.java @@ -30,6 +30,7 @@ public class BiomeGenNetherLava extends BiomeGenBase customBiomeDecorator.netherLavaPerChunk = 20; customBiomeDecorator.smolderingGrassPerChunk = 2; customBiomeDecorator.gravesPerChunk = 1; + customBiomeDecorator.burningBlossomsPerChunk = 4; customBiomeDecorator.generateAsh = true; spawnableMonsterList.clear(); spawnableCreatureList.clear(); diff --git a/common/biomesoplenty/blocks/BlockBOPFlower2.java b/common/biomesoplenty/blocks/BlockBOPFlower2.java new file mode 100644 index 000000000..b08cdfdb9 --- /dev/null +++ b/common/biomesoplenty/blocks/BlockBOPFlower2.java @@ -0,0 +1,206 @@ +package biomesoplenty.blocks; + +import java.util.List; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockFlower; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Icon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import biomesoplenty.BiomesOPlenty; +import biomesoplenty.api.Blocks; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class BlockBOPFlower2 extends BlockFlower +{ + private static final String[] plants2 = new String[] {"hibiscus", "lilyofthevalley", "burningblossom"}; + private Icon[] textures; + + protected BlockBOPFlower2(int blockID, Material material) + { + super(blockID, material); + this.setTickRandomly(true); + float var4 = 0.2F; + this.setBlockBounds(0.5F - var4, 0.0F, 0.5F - var4, 0.5F + var4, var4 * 3.0F, 0.5F + var4); + this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); + } + + public BlockBOPFlower2(int blockID) + { + this(blockID, Material.plants); + } + + @Override + public void registerIcons(IconRegister iconRegister) + { + textures = new Icon[plants2.length]; + + for (int i = 0; i < plants2.length; ++i) { + textures[i] = iconRegister.registerIcon("biomesoplenty:" + plants2[i]); + } + } + + @Override + public Icon getIcon(int side, int meta) + { + if (meta < 0 || meta >= textures.length) { + meta = 0; + } + + return textures[meta]; + } + + @Override + public int getRenderType() + { + return 1; + } + + @Override + public int getLightValue(IBlockAccess world, int x, int y, int z) + { + int meta = world.getBlockMetadata(x, y, z); + if (meta == 2) + return 9; + else + return 0; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int par2, int par3, int par4) + { + int meta = world.getBlockMetadata(par2, par3, par4); + + switch (meta) + { + default: + this.setBlockBounds(0.1F, 0.0F, 0.1F, 0.9F, 0.8F, 0.9F); + break; + } + } + + /** + * A randomly called display update to be able to add particles or other items for display + */ + @Override + public void randomDisplayTick(World par1World, int par2, int par3, int par4, Random par5Random) + { + super.randomDisplayTick(par1World, par2, par3, par4, par5Random); + int meta = par1World.getBlockMetadata(par2, par3, par4); + if (meta == 2) + { + if (par5Random.nextInt(2) == 0) + { + par1World.spawnParticle("smoke", par2 + par5Random.nextFloat(), par3 + par5Random.nextFloat(), par4 + par5Random.nextFloat(), 0.0D, 0.0D, 0.0D); + } + if (par5Random.nextInt(4) == 0) + { + par1World.spawnParticle("flame", par2 + par5Random.nextFloat(), par3 + par5Random.nextFloat(), par4 + par5Random.nextFloat(), 0.0D, 0.0D, 0.0D); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings({ "rawtypes", "unchecked" }) + public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { + for (int i = 0; i < plants2.length; ++i) + { + list.add(new ItemStack(blockID, 1, i)); + } + } + + @Override + protected boolean canThisPlantGrowOnThisBlockID(int id) + { + return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID || id == Block.netherrack.blockID || id == Blocks.longGrass.get().blockID; + } + + protected boolean canThisPlantGrowOnThisBlockID(int id, int metadata) + { + if (metadata == 2) // Burning Blossom + return id == Block.netherrack.blockID; + else + return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID || id == Blocks.longGrass.get().blockID; + } + + @Override + public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side, ItemStack itemStack) + { + int id = world.getBlockId(x, y - 1, z); + int meta = itemStack.getItemDamage(); + //boolean sky = world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z); + + if (itemStack.itemID == blockID) { + switch (meta) + { + case 2: // Burning Blossom + return id == Block.netherrack.blockID; + + default: + return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID || id == Blocks.longGrass.get().blockID; + } + } else + return this.canPlaceBlockOnSide(world, x, y, z, side); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, int neighborID) + { + //super.onNeighborBlockChange(world, x, y, z, neighborID); + this.checkFlowerChange(world, x, y, z); + } + + @Override + public int getDamageValue(World world, int x, int y, int z) + { + int meta = world.getBlockMetadata(x, y, z); + + return meta; + } + + @Override + public int damageDropped(int meta) + { + return meta & 15; + } + + @Override + public boolean canBlockStay(World world, int x, int y, int z) + { + int meta = world.getBlockMetadata(x, y, z); + + if (world.getBlockId(x, y, z) != blockID) + { + if (meta == 2) + return this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z)); + else + return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z)); + } + else + { + if (meta == 2) + return this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z), world.getBlockMetadata(x, y, z)); + else + return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z), world.getBlockMetadata(x, y, z)); + } + } + + @Override + public boolean isBlockReplaceable(World world, int x, int y, int z) + { + //ItemStack itemstack = new ItemStack(Blocks.flowers.get(), 1, 10); + + if (world.getBlockMetadata(x, y, z) == 10) + //if (!world.isRemote) + //world.spawnEntityInWorld(new EntityItem(world, x, y, z, itemstack)); + return true; + return false; + } +} diff --git a/common/biomesoplenty/configuration/BOPBiomes.java b/common/biomesoplenty/configuration/BOPBiomes.java index 61927798a..7243567f1 100644 --- a/common/biomesoplenty/configuration/BOPBiomes.java +++ b/common/biomesoplenty/configuration/BOPBiomes.java @@ -282,7 +282,10 @@ public class BOPBiomes { Biomes.timber = Optional.of((new BiomeGenTimber(BOPConfigurationIDs.timberID)).setColor(353825).setBiomeName("Timber").func_76733_a(5159473).setTemperatureRainfall(0.7F, 0.8F).setMinMaxHeight(0.3F, 0.4F)); Biomes.timberThin = Optional.of((new BiomeGenTimberThin(BOPConfigurationIDs.timberThinID)).setColor(353825).setBiomeName("Thinned Timber").func_76733_a(5159473).setTemperatureRainfall(0.7F, 0.8F).setMinMaxHeight(0.3F, 0.4F)); Biomes.tropicalRainforest = Optional.of((new BiomeGenTropicalRainforest(BOPConfigurationIDs.tropicalRainforestID)).setColor(9286496).setBiomeName("Tropical Rainforest").setTemperatureRainfall(1.2F, 0.9F).setMinMaxHeight(0.3F, 0.7F)); - Biomes.tropics = Optional.of((new BiomeGenTropics(BOPConfigurationIDs.tropicsID)).setColor(9286496).setBiomeName("Tropics").setTemperatureRainfall(2.0F, 2.0F).setMinMaxHeight(0.1F, 1.5F)); + + Biomes.tropics = Optional.of((new BiomeGenTropics(BOPConfigurationIDs.tropicsID)).setColor(9286496).setBiomeName("Tropics").setTemperatureRainfall(2.0F, 2.0F).setMinMaxHeight(0.1F, 0.5F)); + Biomes.tropicsMountain = Optional.of((new BiomeGenTropics(BOPConfigurationIDs.tropicsMountainID)).setColor(9286496).setBiomeName("Tropics Mountain").setTemperatureRainfall(2.0F, 2.0F).setMinMaxHeight(0.5F, 1.1F)); + Biomes.tundra = Optional.of((new BiomeGenTundra(BOPConfigurationIDs.tundraID)).setColor(14090235).setBiomeName("Tundra").setTemperatureRainfall(0.2F, 0.8F).setMinMaxHeight(0.1F, 0.3F)); Biomes.volcano = Optional.of((new BiomeGenVolcano(BOPConfigurationIDs.volcanoID)).setColor(9286496).setBiomeName("Volcano").setDisableRain().setMinMaxHeight(0.6F, 0.9F).setTemperatureRainfall(2.0F, 0.05F)); Biomes.wasteland = Optional.of((new BiomeGenWasteland(BOPConfigurationIDs.wastelandID)).setColor(16421912).setBiomeName("Wasteland").setDisableRain().setTemperatureRainfall(2.0F, 0.05F).setMinMaxHeight(0.3F, 0.4F)); @@ -426,7 +429,10 @@ public class BOPBiomes { BiomeDictionary.registerBiomeType(Biomes.timberThin.get(), Type.FOREST); BiomeDictionary.registerBiomeType(Biomes.tropicalRainforest.get(), Type.JUNGLE); + BiomeDictionary.registerBiomeType(Biomes.tropics.get(), Type.JUNGLE, Type.WATER); + BiomeDictionary.registerBiomeType(Biomes.tropicsMountain.get(), Type.JUNGLE, Type.WATER); + BiomeDictionary.registerBiomeType(Biomes.tundra.get(), Type.FROZEN, Type.WASTELAND); BiomeDictionary.registerBiomeType(Biomes.volcano.get(), Type.WASTELAND, Type.MOUNTAIN); BiomeDictionary.registerBiomeType(Biomes.wasteland.get(), Type.WASTELAND); diff --git a/common/biomesoplenty/configuration/BOPBlocks.java b/common/biomesoplenty/configuration/BOPBlocks.java index 3cbd58fb6..53802d431 100644 --- a/common/biomesoplenty/configuration/BOPBlocks.java +++ b/common/biomesoplenty/configuration/BOPBlocks.java @@ -13,6 +13,7 @@ import biomesoplenty.blocks.BlockBOPColorizedLeaves; import biomesoplenty.blocks.BlockBOPColorizedSapling; import biomesoplenty.blocks.BlockBOPCoral; import biomesoplenty.blocks.BlockBOPFlower; +import biomesoplenty.blocks.BlockBOPFlower2; import biomesoplenty.blocks.BlockBOPFoliage; import biomesoplenty.blocks.BlockBOPGeneric; import biomesoplenty.blocks.BlockBOPGeneric.BlockType; @@ -56,6 +57,7 @@ import biomesoplenty.itemblocks.ItemBlockColorizedLeaves; import biomesoplenty.itemblocks.ItemBlockColorizedSapling; import biomesoplenty.itemblocks.ItemBlockCoral; import biomesoplenty.itemblocks.ItemBlockFlower; +import biomesoplenty.itemblocks.ItemBlockFlower2; import biomesoplenty.itemblocks.ItemBlockFoliage; import biomesoplenty.itemblocks.ItemBlockGlass; import biomesoplenty.itemblocks.ItemBlockGrass; @@ -128,6 +130,7 @@ public class BOPBlocks Blocks.ash = Optional.of((new BlockAsh(BOPConfigurationIDs.ashID)).setHardness(0.4F).setStepSound(Block.soundSandFootstep).setUnlocalizedName("bop.ash")); Blocks.plants = Optional.of((new BlockBOPPlant(BOPConfigurationIDs.plantsID)).setUnlocalizedName("bop.plants")); Blocks.flowers = Optional.of((new BlockBOPFlower(BOPConfigurationIDs.flowersID)).setHardness(0.0F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("bop.flowers")); + Blocks.flowers2 = Optional.of((new BlockBOPFlower2(BOPConfigurationIDs.flowers2ID)).setHardness(0.0F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("bop.flowers2")); Blocks.mushrooms = Optional.of((new BlockBOPMushroom(BOPConfigurationIDs.mushroomsID)).setHardness(0.0F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("bop.mushrooms")); Blocks.coral = Optional.of((new BlockBOPCoral(BOPConfigurationIDs.coralID)).setHardness(0.0F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("bop.coral")); Blocks.willow = Optional.of((new BlockWillow(BOPConfigurationIDs.willowID)).setHardness(0.2F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("bop.willow")); @@ -215,6 +218,7 @@ public class BOPBlocks GameRegistry.registerBlock(Blocks.ash.get(), "bop.ash"); GameRegistry.registerBlock(Blocks.plants.get(), ItemBlockPlant.class, "bop.plants"); GameRegistry.registerBlock(Blocks.flowers.get(), ItemBlockFlower.class, "bop.flowers"); + GameRegistry.registerBlock(Blocks.flowers2.get(), ItemBlockFlower2.class, "bop.flowers2"); GameRegistry.registerBlock(Blocks.mushrooms.get(), ItemBlockMushroom.class, "bop.mushrooms"); GameRegistry.registerBlock(Blocks.coral.get(), ItemBlockCoral.class, "bop.coral"); GameRegistry.registerBlock(Blocks.willow.get(), ItemBOPWillow.class, "bop.willow"); diff --git a/common/biomesoplenty/configuration/configfile/BOPConfigurationIDs.java b/common/biomesoplenty/configuration/configfile/BOPConfigurationIDs.java index 64ddf686a..d90c0c41e 100644 --- a/common/biomesoplenty/configuration/configfile/BOPConfigurationIDs.java +++ b/common/biomesoplenty/configuration/configfile/BOPConfigurationIDs.java @@ -31,6 +31,7 @@ public class BOPConfigurationIDs public static int plantsID; public static int flowersID; + public static int flowers2ID; public static int mushroomsID; public static int coralID; public static int willowID; @@ -261,6 +262,7 @@ public class BOPConfigurationIDs public static int timberThinID; public static int tropicalRainforestID; public static int tropicsID; + public static int tropicsMountainID; public static int tundraID; public static int volcanoID; public static int wastelandID; @@ -396,6 +398,8 @@ public class BOPConfigurationIDs graveID = config.getBlock("Grave ID", 1981, null).getInt(); leavesFruit2ID = config.getBlock("Fruit Leaf Block 2 ID", 1982, null).getInt(); + + flowers2ID = config.getBlock("Flower 2 ID", 1983, null).getInt(); // Get Item ID's foodID = config.getItem("Food ID", 21003, null).getInt(); @@ -467,6 +471,7 @@ public class BOPConfigurationIDs //23-79 ExtraBiomesXL + tropicsMountainID = config.get("Biome IDs", "Tropics Mountain (Sub-Biome) ID", 32).getInt(); autumnHillsID = config.get("Biome IDs", "Autumn Hills ID", 33).getInt(); overgrownGreensID = config.get("Biome IDs", "Overgrown Greens ID", 34).getInt(); forestHillsNewID = config.get("Biome IDs", "Forest Hills (Sub-Biome) ID", 35).getInt(); diff --git a/common/biomesoplenty/integration/ForestryIntegration.java b/common/biomesoplenty/integration/ForestryIntegration.java index 89f36b5ff..bed8a4e42 100644 --- a/common/biomesoplenty/integration/ForestryIntegration.java +++ b/common/biomesoplenty/integration/ForestryIntegration.java @@ -85,6 +85,7 @@ public class ForestryIntegration EnumTemperature.warmBiomeIds.add(BOPConfigurationIDs.oasisID); EnumTemperature.warmBiomeIds.add(BOPConfigurationIDs.rainforestID); EnumTemperature.warmBiomeIds.add(BOPConfigurationIDs.tropicsID); + EnumTemperature.warmBiomeIds.add(BOPConfigurationIDs.tropicsMountainID); EnumTemperature.warmBiomeIds.add(BOPConfigurationIDs.woodlandID); EnumTemperature.warmBiomeIds.add(BOPConfigurationIDs.jungleNewID); EnumTemperature.warmBiomeIds.add(BOPConfigurationIDs.jungleHillsNewID); @@ -98,6 +99,7 @@ public class ForestryIntegration EnumHumidity.dampBiomeIds.add(BOPConfigurationIDs.oasisID); EnumHumidity.dampBiomeIds.add(BOPConfigurationIDs.rainforestID); EnumHumidity.dampBiomeIds.add(BOPConfigurationIDs.tropicsID); + EnumHumidity.dampBiomeIds.add(BOPConfigurationIDs.tropicsMountainID); EnumHumidity.dampBiomeIds.add(BOPConfigurationIDs.woodlandID); EnumHumidity.dampBiomeIds.add(BOPConfigurationIDs.jungleNewID); EnumHumidity.dampBiomeIds.add(BOPConfigurationIDs.jungleHillsNewID); diff --git a/common/biomesoplenty/integration/ThaumcraftIntegration.java b/common/biomesoplenty/integration/ThaumcraftIntegration.java index e8d67c389..c26fd82cc 100644 --- a/common/biomesoplenty/integration/ThaumcraftIntegration.java +++ b/common/biomesoplenty/integration/ThaumcraftIntegration.java @@ -222,6 +222,10 @@ public class ThaumcraftIntegration { ThaumcraftApi.registerObjectTag(getBID("lilyflower"), getBMeta("lilyflower"), (new AspectList()).add(Aspect.PLANT, 1).add(Aspect.PLANT, 1).add(Aspect.WATER, 1)); ThaumcraftApi.registerObjectTag(getBID("rainbowflower"), getBMeta("rainbowflower"), (new AspectList()).add(Aspect.PLANT, 1).add(Aspect.PLANT, 1).add(Aspect.LIGHT, 1).add(Aspect.MAGIC, 1)); ThaumcraftApi.registerObjectTag(getBID("sunflower"), getBMeta("sunflower"), (new AspectList()).add(Aspect.PLANT, 1).add(Aspect.PLANT, 1).add(Aspect.LIGHT, 1)); + + ThaumcraftApi.registerObjectTag(getBID("hibiscus"), getBMeta("hibiscus"), (new AspectList()).add(Aspect.PLANT, 4)); + ThaumcraftApi.registerObjectTag(getBID("lilyofthevalley"), getBMeta("lilyofthevalley"), (new AspectList()).add(Aspect.PLANT, 4).add(Aspect.POISON, 1)); + ThaumcraftApi.registerObjectTag(getBID("burningblossom"), getBMeta("burningblossom"), (new AspectList()).add(Aspect.PLANT, 4).add(Aspect.FIRE, 2)); } diff --git a/common/biomesoplenty/itemblocks/ItemBlockFlower2.java b/common/biomesoplenty/itemblocks/ItemBlockFlower2.java new file mode 100644 index 000000000..0f28c8e45 --- /dev/null +++ b/common/biomesoplenty/itemblocks/ItemBlockFlower2.java @@ -0,0 +1,118 @@ +package biomesoplenty.itemblocks; + +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Icon; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import biomesoplenty.BiomesOPlenty; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemBlockFlower2 extends ItemBlock +{ + private static final String[] plants = new String[] {"hibiscus", "lilyofthevalley", "burningblossom"}; + @SideOnly(Side.CLIENT) + private Icon[] textures; + + public ItemBlockFlower2(int par1) + { + super(par1); + setMaxDamage(0); + setHasSubtypes(true); + } + + @Override + public String getUnlocalizedName(ItemStack itemStack) + { + int meta = itemStack.getItemDamage(); + if (meta < 0 || meta >= plants.length) { + meta = 0; + } + + return super.getUnlocalizedName() + "." + plants[meta]; + } + + @Override + public Icon getIconFromDamage(int meta) + { + return Block.blocksList[itemID].getIcon(0, meta); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean isFull3D() + { + return true; + } + + @Override + public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + int id = world.getBlockId(x, y, z); + + if (id == Block.snow.blockID && (world.getBlockMetadata(x, y, z) & 7) < 1) { + side = 1; + } else if (!Block.blocksList[id].isBlockReplaceable(world, x, y, z)) + { + if (side == 0) { + --y; + } + + if (side == 1) { + ++y; + } + + if (side == 2) { + --z; + } + + if (side == 3) { + ++z; + } + + if (side == 4) { + --x; + } + + if (side == 5) { + ++x; + } + } + + if (!player.canPlayerEdit(x, y, z, side, itemStack)) + return false; + else if (itemStack.stackSize == 0) + return false; + else + { + if (world.canPlaceEntityOnSide(this.getBlockID(), x, y, z, false, side, (Entity)null, itemStack)) + { + Block block = Block.blocksList[this.getBlockID()]; + int j1 = block.onBlockPlaced(world, x, y, z, side, hitX, hitY, hitZ, 0); + + if (world.setBlock(x, y, z, this.getBlockID(), itemStack.getItemDamage(), 3)) + { + + if (world.getBlockId(x, y, z) == this.getBlockID()) + { + Block.blocksList[this.getBlockID()].onBlockPlacedBy(world, x, y, z, player, itemStack); + Block.blocksList[this.getBlockID()].onPostBlockPlaced(world, x, y, z, j1); + } + + world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, block.stepSound.getPlaceSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F); + --itemStack.stackSize; + } + } + + return true; + } + } +} diff --git a/common/biomesoplenty/world/layer/BiomeLayerSub.java b/common/biomesoplenty/world/layer/BiomeLayerSub.java index 245a74190..10f1b550a 100644 --- a/common/biomesoplenty/world/layer/BiomeLayerSub.java +++ b/common/biomesoplenty/world/layer/BiomeLayerSub.java @@ -40,6 +40,7 @@ public class BiomeLayerSub extends BiomeLayer if (k1 == Biomes.seasonalForest.get().biomeID && nextInt(2) == 0) { l1 = Biomes.seasonalSpruceForest.get().biomeID; } if (k1 == Biomes.field.get().biomeID && nextInt(2) == 0) { l1 = Biomes.fieldForest.get().biomeID; } if (k1 == Biomes.savanna.get().biomeID && nextInt(4) == 0) { l1 = Biomes.savannaPlateau.get().biomeID; } + if (k1 == Biomes.tropics.get().biomeID && nextInt(3) == 0) { l1 = Biomes.tropicsMountain.get().biomeID; } if (k1 == Biomes.forestNew.get().biomeID && nextInt(3) == 0) { l1 = Biomes.forestHillsNew.get().biomeID; } if (k1 == Biomes.taigaNew.get().biomeID && nextInt(3) == 0) { l1 = Biomes.taigaHillsNew.get().biomeID; } diff --git a/resources/assets/biomesoplenty/lang/en_US.xml b/resources/assets/biomesoplenty/lang/en_US.xml index 742f19681..21f8c3b09 100644 --- a/resources/assets/biomesoplenty/lang/en_US.xml +++ b/resources/assets/biomesoplenty/lang/en_US.xml @@ -53,6 +53,10 @@ Sunflower Sunflower White Dandelion + + Pink Hibiscus + Lily of the Valley + Burning Blossom Algae Short Grass diff --git a/resources/assets/biomesoplenty/textures/blocks/hibiscus.png b/resources/assets/biomesoplenty/textures/blocks/hibiscus.png new file mode 100644 index 0000000000000000000000000000000000000000..03afac84c18a5ac9415236a5e8fbf31a9fa5af17 GIT binary patch literal 351 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3Q$0gN_s>q|KvlOr zT^vI!{MQDY6g*@gP|Ue!MT?lxW1|@hC+%6GCci?-|3xEvs6_T&qoPfJF7%}Jui5f? z$^HdXCiR84Jer%bb-8Tdc?Lz_fNY*B+xHi^1^A~Q+oa?6MS~^QY!TP49eeV9ZO-?a zE??Q-AHLziwc{qH!sZUSw&u5D181i#iuV0rQ-Aaxzi&Xn?`sWeSsQjUG%)(^_*!Z& z8Ch)o+?OLGczfx>D>EdIaMfH$kJz`ebY>^VzSXmT6okxHVDkCl?0DAmjA7dWcd1<7 t+9&2E%)KFJEE3LIs<{98gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^7j^FlWO00Bu!L_t(IPo0wMO2a@9g*W%aAEF@iA^f3up$PR_3awgu(NwL9 zidZQKUQsDp@nQ12>|6HU{S>>qfZmt;AS4ouVJ zkf^!jH@7LaZKooauRdW8Ft;p=^W01f#>DAUgQkY#JU@SFQD$EbZ)=1RCwA{PsrS|) zI6+(tc6rS=C%Ue4s7-?iHX<+8XL-CD?u+AxZ7O_BinHe?*BGfLPxh}XROu|G3n(T@ zMQLY7l=q5Xn}O@PX{VtKq4?gS_wI`@3`vI6Q3aWHe}fBX&{}JOt;abF1VO;xFk+u7 zh&taL4i0Xrw9=TPD2l{-dy$Urw^%?00;(Vv(Pi`i)}^yF$ph|w@>r)@cbWH%Sj+-X zvRIww#Sj>=n8j*yp72{7$4M%G1Oj*{XrTO+`4Hk0%q*_z@jSB@00000NkvXXu0mjf DThqMz literal 0 HcmV?d00001