diff --git a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java index 76b0d2704..a06740bc5 100644 --- a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java +++ b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java @@ -81,6 +81,7 @@ public class BOPBiomes public static Optional coral_reef = Optional.absent(); public static Optional kelp_forest = Optional.absent(); public static Optional tropical_island = Optional.absent(); + public static Optional volcanic_island = Optional.absent(); public static Optional gravel_beach = Optional.absent(); //Biome extensions diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenHighland.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenHighland.java index 32c753204..08a30a468 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenHighland.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenHighland.java @@ -41,7 +41,7 @@ public class BiomeGenHighland extends BOPBiome this.addWeight(BOPClimates.COOL_TEMPERATE, 7); - this.beachBiomeId = BiomeGenBase.stoneBeach.biomeID; + this.beachBiomeId = -1; // boulders this.addGenerator("boulders", GeneratorStage.SAND, (new GeneratorBlobs.Builder()).amountPerChunk(0.5F).placeOn(Blocks.grass).with(Blocks.cobblestone.getDefaultState()).minRadius(0.3F).maxRadius(1.2F).numBalls(1).scatterYMethod(ScatterYMethod.AT_SURFACE).create()); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMoor.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMoor.java index c7a988419..24dc103d5 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMoor.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenMoor.java @@ -49,7 +49,7 @@ public class BiomeGenMoor extends BOPBiome this.canSpawnInBiome = false; this.canGenerateVillages = false; - this.beachBiomeId = BiomeGenBase.stoneBeach.biomeID; + this.beachBiomeId = -1; this.addWeight(BOPClimates.COLD_SWAMP, 5); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOvergrownCliffs.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOvergrownCliffs.java index 9a5236c92..d30aba30f 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOvergrownCliffs.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOvergrownCliffs.java @@ -13,7 +13,9 @@ import net.minecraft.block.BlockFlower; import net.minecraft.block.BlockPlanks; import net.minecraft.block.BlockTallGrass; import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.passive.EntityOcelot; import net.minecraft.init.Blocks; +import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry; import biomesoplenty.api.biome.BOPBiome; import biomesoplenty.api.biome.generation.GeneratorStage; import biomesoplenty.api.biome.generation.GeneratorWeighted; @@ -50,6 +52,7 @@ public class BiomeGenOvergrownCliffs extends BOPBiome this.beachBiomeId = -1; this.spawnableCreatureList.clear(); + this.spawnableMonsterList.add(new SpawnListEntry(EntityOcelot.class, 2, 1, 1)); // trees GeneratorWeighted treeGenerator = new GeneratorWeighted(40.0F); diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenTropicalIsland.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenTropicalIsland.java index 6e6f38ba2..46aa0262c 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenTropicalIsland.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenTropicalIsland.java @@ -28,6 +28,7 @@ import biomesoplenty.common.world.feature.GeneratorOreSingle; import net.minecraft.block.BlockDoublePlant; import net.minecraft.block.BlockFlower; import net.minecraft.block.BlockTallGrass; +import net.minecraft.entity.passive.EntityOcelot; import net.minecraft.init.Blocks; import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry; diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenVolcanicIsland.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenVolcanicIsland.java new file mode 100644 index 000000000..bb9baff06 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenVolcanicIsland.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright 2015-2016, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ + +package biomesoplenty.common.biome.overworld; + +import net.minecraft.init.Blocks; +import biomesoplenty.api.biome.BOPBiome; +import biomesoplenty.api.biome.generation.GeneratorStage; +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod; +import biomesoplenty.common.util.block.BlockQuery; +import biomesoplenty.common.util.block.BlockQuery.IBlockPosQuery; +import biomesoplenty.common.world.feature.GeneratorLakes; +import biomesoplenty.common.world.feature.GeneratorOreSingle; +import biomesoplenty.common.world.feature.GeneratorSplotches; + +public class BiomeGenVolcanicIsland extends BOPBiome +{ + public BiomeGenVolcanicIsland() + { + // terrain + this.terrainSettings.avgHeight(120).heightVariation(50, 50).octaves(1, 1, 2, 2, 3, 2).sidewaysNoise(0.1D); + + this.setTemperatureRainfall(1.2F, 0.5F); + + this.setColor(6645093); + + this.topBlock = BOPBlocks.ash_block.getDefaultState(); + this.fillerBlock = BOPBlocks.ash_block.getDefaultState(); + + this.canSpawnInBiome = false; + this.canGenerateVillages = false; + this.canGenerateRivers = false; + + this.theBiomeDecorator.generateLakes = false; + + this.beachBiomeId = -1; + + this.avgDirtDepth = 16; + + this.spawnableCreatureList.clear(); + this.spawnableMonsterList.clear(); + + clearWeights(); + + // lava + IBlockPosQuery emptyAshBlock = BlockQuery.buildAnd().withAirAbove().states(this.topBlock).create(); + this.addGenerator("lava_flows", GeneratorStage.FLOWERS,(new GeneratorSplotches.Builder()).placeOn(emptyAshBlock).replace(BOPBlocks.ash_block).amountPerChunk(0.1F).splotchSize(12).scatterYMethod(ScatterYMethod.AT_SURFACE).with(Blocks.flowing_lava.getDefaultState()).create()); + this.addGenerator("lava_lakes", GeneratorStage.SAND, (new GeneratorLakes.Builder()).amountPerChunk(2.5F).lavaLake().create()); + + // gem + this.addGenerator("emeralds", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(Blocks.emerald_ore.getDefaultState()).create()); + } +} diff --git a/src/main/java/biomesoplenty/common/block/BlockBOPAsh.java b/src/main/java/biomesoplenty/common/block/BlockBOPAsh.java index 0c49f07e1..cc1e3a14f 100644 --- a/src/main/java/biomesoplenty/common/block/BlockBOPAsh.java +++ b/src/main/java/biomesoplenty/common/block/BlockBOPAsh.java @@ -54,8 +54,8 @@ public class BlockBOPAsh extends BlockBOPGeneric return; } } - entity.motionX *= 0.4D; - entity.motionZ *= 0.4D; + entity.motionX *= 0.8D; + entity.motionZ *= 0.8D; } @Override diff --git a/src/main/java/biomesoplenty/common/init/ModBiomes.java b/src/main/java/biomesoplenty/common/init/ModBiomes.java index abfd72e93..810caccf2 100644 --- a/src/main/java/biomesoplenty/common/init/ModBiomes.java +++ b/src/main/java/biomesoplenty/common/init/ModBiomes.java @@ -79,6 +79,7 @@ import static biomesoplenty.api.biome.BOPBiomes.temperate_rainforest; import static biomesoplenty.api.biome.BOPBiomes.tropical_island; import static biomesoplenty.api.biome.BOPBiomes.tropical_rainforest; import static biomesoplenty.api.biome.BOPBiomes.tundra; +import static biomesoplenty.api.biome.BOPBiomes.volcanic_island; import static biomesoplenty.api.biome.BOPBiomes.wasteland; import static biomesoplenty.api.biome.BOPBiomes.wetland; import static biomesoplenty.api.biome.BOPBiomes.woodland; @@ -156,6 +157,7 @@ import biomesoplenty.common.biome.overworld.BiomeGenTemperateRainforest; import biomesoplenty.common.biome.overworld.BiomeGenTropicalIsland; import biomesoplenty.common.biome.overworld.BiomeGenTropicalRainforest; import biomesoplenty.common.biome.overworld.BiomeGenTundra; +import biomesoplenty.common.biome.overworld.BiomeGenVolcanicIsland; import biomesoplenty.common.biome.overworld.BiomeGenWasteland; import biomesoplenty.common.biome.overworld.BiomeGenWetland; import biomesoplenty.common.biome.overworld.BiomeGenWoodland; @@ -391,8 +393,10 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry // island biomes tropical_island = registerBOPBiome(new BiomeGenTropicalIsland(), "Tropical Island"); + volcanic_island = registerBOPBiome(new BiomeGenVolcanicIsland(), "Volcanic Island"); addIslandBiome(tropical_island, 10); + addIslandBiome(volcanic_island, 3); } public static void initExtendedBiomes() @@ -482,6 +486,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry registerBiomeToDictionary(BOPBiomes.coral_reef, Type.WATER, Type.OCEAN); registerBiomeToDictionary(BOPBiomes.kelp_forest, Type.WATER, Type.OCEAN); registerBiomeToDictionary(BOPBiomes.tropical_island, Type.WATER, Type.OCEAN, Type.JUNGLE, Type.LUSH); + registerBiomeToDictionary(BOPBiomes.volcanic_island, Type.WATER, Type.OCEAN, Type.DEAD, Type.WASTELAND, Type.MOUNTAIN, Type.HOT); registerBiomeToDictionary(BOPBiomes.gravel_beach, Type.BEACH); } diff --git a/src/main/java/biomesoplenty/common/init/ModCrafting.java b/src/main/java/biomesoplenty/common/init/ModCrafting.java index 3049a0419..8f681f13d 100644 --- a/src/main/java/biomesoplenty/common/init/ModCrafting.java +++ b/src/main/java/biomesoplenty/common/init/ModCrafting.java @@ -19,6 +19,7 @@ import net.minecraftforge.oredict.ShapelessOreRecipe; import biomesoplenty.api.block.BOPBlocks; import biomesoplenty.api.item.BOPItems; import biomesoplenty.common.block.BlockBOPBones; +import biomesoplenty.common.block.BlockBOPDirt; import biomesoplenty.common.block.BlockBOPDoor; import biomesoplenty.common.block.BlockBOPDoublePlant; import biomesoplenty.common.block.BlockBOPFence; @@ -34,6 +35,7 @@ import biomesoplenty.common.block.BlockBOPLog; import biomesoplenty.common.block.BlockBOPMushroom; import biomesoplenty.common.block.BlockBOPPlanks; import biomesoplenty.common.block.BlockBOPPlant; +import biomesoplenty.common.block.BlockBOPSand; import biomesoplenty.common.block.BlockBOPSapling; import biomesoplenty.common.block.BlockBOPSeaweed; import biomesoplenty.common.block.BlockBOPTerrarium; @@ -239,6 +241,16 @@ public class ModCrafting // Mossy Stone Brick GameRegistry.addShapedRecipe(new ItemStack(Blocks.stonebrick, 1, 1), new Object[] {"MMM", "MSM", "MMM", 'M', BOPBlocks.moss, 'S', Blocks.stonebrick}); + //Coarse Dirts + GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.dirt, 4, BOPBlocks.dirt.getMetaFromState(BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.LOAMY).withProperty(BlockBOPDirt.COARSE, true))), new Object[] {"GD", "DG", 'G', Blocks.gravel, 'D', new ItemStack(BOPBlocks.dirt, 4, BlockBOPDirt.BOPDirtType.LOAMY.ordinal())}); + GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.dirt, 4, BOPBlocks.dirt.getMetaFromState(BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.LOAMY).withProperty(BlockBOPDirt.COARSE, true))), new Object[] {"DG", "GD", 'G', Blocks.gravel, 'D', new ItemStack(BOPBlocks.dirt, 4, BlockBOPDirt.BOPDirtType.LOAMY.ordinal())}); + + GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.dirt, 4, BOPBlocks.dirt.getMetaFromState(BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.SANDY).withProperty(BlockBOPDirt.COARSE, true))), new Object[] {"GD", "DG", 'G', Blocks.gravel, 'D', new ItemStack(BOPBlocks.dirt, 4, BlockBOPDirt.BOPDirtType.SANDY.ordinal())}); + GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.dirt, 4, BOPBlocks.dirt.getMetaFromState(BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.SANDY).withProperty(BlockBOPDirt.COARSE, true))), new Object[] {"DG", "GD", 'G', Blocks.gravel, 'D', new ItemStack(BOPBlocks.dirt, 4, BlockBOPDirt.BOPDirtType.SANDY.ordinal())}); + + GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.dirt, 4, BOPBlocks.dirt.getMetaFromState(BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.SILTY).withProperty(BlockBOPDirt.COARSE, true))), new Object[] {"GD", "DG", 'G', Blocks.gravel, 'D', new ItemStack(BOPBlocks.dirt, 4, BlockBOPDirt.BOPDirtType.SILTY.ordinal())}); + GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.dirt, 4, BOPBlocks.dirt.getMetaFromState(BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.SILTY).withProperty(BlockBOPDirt.COARSE, true))), new Object[] {"DG", "GD", 'G', Blocks.gravel, 'D', new ItemStack(BOPBlocks.dirt, 4, BlockBOPDirt.BOPDirtType.SILTY.ordinal())}); + // Enderporter GameRegistry.addShapedRecipe(new ItemStack(BOPItems.enderporter), new Object[] {"IOI", "OAO", "IOI", 'I', Items.ender_eye, 'O', new ItemStack(BOPItems.soul), 'A', new ItemStack(BOPItems.gem, 1, BOPGems.AMETHYST.ordinal())}); @@ -308,6 +320,7 @@ public class ModCrafting { // Register smelting recipes + GameRegistry.addSmelting(new ItemStack(BOPBlocks.sand, 1, BlockBOPSand.SandType.QUICKSAND.ordinal()), new ItemStack(Blocks.sand), 0F); GameRegistry.addSmelting(new ItemStack(BOPBlocks.mud), new ItemStack(Blocks.dirt), 0F); GameRegistry.addSmelting(BlockBOPPlant.paging.getVariantItem(BOPPlants.TINYCACTUS), new ItemStack(Items.dye, 1, EnumDyeColor.GREEN.getDyeDamage()), 0.2F); GameRegistry.addSmelting(BOPItems.mudball, new ItemStack(BOPItems.mud_brick), 0F); @@ -352,6 +365,8 @@ public class ModCrafting OreDictionary.registerOre("blockGrass", new ItemStack(BOPBlocks.grass, 1, BlockBOPGrass.BOPGrassType.ORIGIN.ordinal())); OreDictionary.registerOre("blockGrass", new ItemStack(Blocks.grass)); + OreDictionary.registerOre("blockDirt", new ItemStack(Blocks.dirt)); + OreDictionary.registerOre("foodMushroompowder", new ItemStack(BOPItems.shroompowder)); OreDictionary.registerOre("foodFruitsalad", new ItemStack(BOPItems.saladfruit)); OreDictionary.registerOre("foodVeggiesalad", new ItemStack(BOPItems.saladveggie));