Removed the Boneyard. Fixed overgrown stone/netherrack and spectral moss blocks. More improvements to Nether biomes

This commit is contained in:
Forstride 2017-04-21 10:45:01 -04:00
parent 50643ec899
commit 0cf39d0b33
24 changed files with 253 additions and 360 deletions

View file

@ -92,7 +92,6 @@ public class BOPBiomes
public static Optional<Biome> gravel_beach = Optional.absent();
// nether biomes
public static Optional<Biome> boneyard = Optional.absent();
public static Optional<Biome> corrupted_sands = Optional.absent();
public static Optional<Biome> fungi_forest = Optional.absent();
public static Optional<Biome> phantasmagoric_inferno = Optional.absent();

View file

@ -24,7 +24,6 @@ public class BOPBlocks
public static Block mushroom;
public static Block stone;
public static Block biome_block;
public static Block bone_segment;
public static Block flower_0;
public static Block flower_1;

View file

@ -15,6 +15,6 @@ public interface IBOPWorldSettings
{
GEMS, SOILS, TREES, GRASSES, FOLIAGE, FLOWERS, PLANTS, WATER_PLANTS, MUSHROOMS,
ROCK_FORMATIONS, POISON_IVY, FLAX, BERRY_BUSHES, THORNS, QUICKSAND, LIQUID_POISON, HOT_SPRINGS,
NETHER_HIVES, NETHER_PLANTS, END_FEATURES;
NETHER_HIVES, END_FEATURES;
}
}

View file

@ -191,7 +191,6 @@ public class GuiBOPConfigureWorld extends GuiScreen implements GuiSlider.FormatH
GENERATE_LIQUID_POISON (122),
GENERATE_HOT_SPRINGS (123),
GENERATE_NETHER_HIVES (124),
GENERATE_NETHER_PLANTS (125),
GENERATE_END_FEATURES (126),
MAIN_NOISE_SCALE_X (127),
MAIN_NOISE_SCALE_Y (128),
@ -271,7 +270,6 @@ public class GuiBOPConfigureWorld extends GuiScreen implements GuiSlider.FormatH
new GuiBOPPageList.GuiButtonEntry(GuiEntries.GENERATE_LIQUID_POISON.getId(), "Liquid Poison Pools", true, this.settings.generateLiquidPoison),
new GuiBOPPageList.GuiButtonEntry(GuiEntries.GENERATE_HOT_SPRINGS.getId(), "Hot Spring Pools", true, this.settings.generateHotSprings),
new GuiBOPPageList.GuiButtonEntry(GuiEntries.GENERATE_NETHER_HIVES.getId(), "Nether Hives", true, this.settings.generateNetherHives),
new GuiBOPPageList.GuiButtonEntry(GuiEntries.GENERATE_NETHER_PLANTS.getId(), "Nether Plants", true, this.settings.generateNetherPlants),
new GuiBOPPageList.GuiButtonEntry(GuiEntries.GENERATE_END_FEATURES.getId(), "End Features", true, this.settings.generateEndFeatures)
};
@ -425,9 +423,6 @@ public class GuiBOPConfigureWorld extends GuiScreen implements GuiSlider.FormatH
case GENERATE_NETHER_HIVES:
this.settings.generateNetherHives = value;
break;
case GENERATE_NETHER_PLANTS:
this.settings.generateNetherPlants = value;
break;
case GENERATE_END_FEATURES:
this.settings.generateEndFeatures = value;
break;

View file

@ -1,31 +0,0 @@
/*******************************************************************************
* Copyright 2014-2017, 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.nether;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.IBlockPosQuery;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.api.generation.GeneratorStage;
import biomesoplenty.common.block.BlockBOPGrass;
import biomesoplenty.common.util.block.BlockQuery;
import biomesoplenty.common.world.generator.GeneratorHellFossils;
import biomesoplenty.common.world.generator.GeneratorSplatter;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
public class BiomeBoneyard extends BOPHellBiome
{
public BiomeBoneyard()
{
super("boneyard", new PropsBuilder("Boneyard").withGuiColour(0xA93C3E).withTemperature(2.0F).withRainfall(0.0F).withRainDisabled());
this.addWeight(BOPClimates.HELL, 20);
this.addGenerator("hell_fossils", GeneratorStage.PRE, (new GeneratorHellFossils.Builder()).amountPerChunk(9.0F).create());
}
}

View file

@ -9,6 +9,8 @@ package biomesoplenty.common.biome.nether;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.IBlockPosQuery;
import biomesoplenty.api.config.IBOPWorldSettings;
import biomesoplenty.api.config.IBOPWorldSettings.GeneratorType;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.api.enums.BOPPlants;
import biomesoplenty.api.generation.GeneratorStage;
@ -18,6 +20,10 @@ import biomesoplenty.common.util.block.BlockQuery;
import biomesoplenty.common.world.generator.GeneratorFlora;
import biomesoplenty.common.world.generator.GeneratorLakes;
import biomesoplenty.common.world.generator.GeneratorSplatter;
import biomesoplenty.common.world.generator.GeneratorWeighted;
import biomesoplenty.common.world.generator.tree.GeneratorBasicTree;
import biomesoplenty.common.world.generator.tree.GeneratorBigTree;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
@ -43,4 +49,14 @@ public class BiomeCorruptedSands extends BOPHellBiome
this.addGenerator("dead_grass", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(5.0F).with(BOPPlants.DEADGRASS).scatterYMethod(ScatterYMethod.NETHER_SURFACE).create());
this.addGenerator("thorns", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(20.0F).with(BOPPlants.THORN).scatterYMethod(ScatterYMethod.NETHER_SURFACE).create());
}
@Override
public void applySettings(IBOPWorldSettings settings)
{
if (!settings.isEnabled(GeneratorType.NETHER_HIVES)) {this.removeGenerator("hive");}
if (!settings.isEnabled(GeneratorType.THORNS)) {this.removeGenerator("thorns");}
if (!settings.isEnabled(GeneratorType.QUICKSAND)) {this.removeGenerator("quicksand");}
}
}

View file

@ -11,7 +11,9 @@ import java.util.Random;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.IBlockPosQuery;
import biomesoplenty.api.config.IBOPWorldSettings;
import biomesoplenty.api.config.IConfigObj;
import biomesoplenty.api.config.IBOPWorldSettings.GeneratorType;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.api.enums.BOPFlowers;
import biomesoplenty.api.enums.BOPPlants;
@ -58,4 +60,12 @@ public class BiomeFungiForest extends BOPHellBiome
this.addGenerator("big_brown_mushroom", GeneratorStage.BIG_SHROOM,(new GeneratorBigMushroom.Builder()).amountPerChunk(2.0F).mushroomType(GeneratorBigMushroom.BigMushroomType.BROWN).scatterYMethod(ScatterYMethod.NETHER_SURFACE).placeOn(surfaceBlocks).create());
this.addGenerator("big_red_mushroom", GeneratorStage.BIG_SHROOM,(new GeneratorBigMushroom.Builder()).amountPerChunk(15.0F).mushroomType(GeneratorBigMushroom.BigMushroomType.RED).scatterYMethod(ScatterYMethod.NETHER_SURFACE).minHeight(5).maxHeight(15).placeOn(surfaceBlocks).create());
}
@Override
public void applySettings(IBOPWorldSettings settings)
{
if (!settings.isEnabled(GeneratorType.NETHER_HIVES)) {this.removeGenerator("hive");}
if (!settings.isEnabled(GeneratorType.MUSHROOMS)) {this.removeGenerator("glowshrooms"); this.removeGenerator("toadstools"); this.removeGenerator("flat_mushroom"); this.removeGenerator("blue_milk_caps"); this.removeGenerator("portobellos");}
}
}

View file

@ -9,6 +9,8 @@ package biomesoplenty.common.biome.nether;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.IBlockPosQuery;
import biomesoplenty.api.config.IBOPWorldSettings;
import biomesoplenty.api.config.IBOPWorldSettings.GeneratorType;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.api.enums.BOPPlants;
import biomesoplenty.api.generation.GeneratorStage;
@ -41,4 +43,10 @@ public class BiomePhantasmagoricInferno extends BOPHellBiome
this.addGenerator("fire", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(5.0F).with(Blocks.FIRE.getDefaultState()).placeOn(emptyAsh).scatterYMethod(ScatterYMethod.NETHER_SURFACE).create());
}
@Override
public void applySettings(IBOPWorldSettings settings)
{
if (!settings.isEnabled(GeneratorType.NETHER_HIVES)) {this.removeGenerator("hive");}
}
}

View file

@ -9,6 +9,8 @@ package biomesoplenty.common.biome.nether;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.IBlockPosQuery;
import biomesoplenty.api.config.IBOPWorldSettings;
import biomesoplenty.api.config.IBOPWorldSettings.GeneratorType;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.api.generation.GeneratorStage;
import biomesoplenty.common.block.BlockBOPGrass;
@ -41,11 +43,18 @@ public class BiomePolarChasm extends BOPHellBiome
this.addGenerator("ice_pools", GeneratorStage.SAND, (new GeneratorLakes.Builder()).amountPerChunk(5.0F).liquid(Blocks.ICE.getDefaultState()).frozenLiquid((IBlockState)null).scatterYMethod(ScatterYMethod.NETHER_SURFACE).create());
//ice crystals
IBlockPosQuery emptyHardIce = BlockQuery.buildAnd().withAltitudeBetween(90, 120).withAirBelow().states(BOPBlocks.hard_ice.getDefaultState()).create();
this.addGenerator("ice_crystals", GeneratorStage.ORE_PRE, (new GeneratorCrystals.Builder()).amountPerChunk(20.0F).placeOn(emptyHardIce).with(Blocks.ICE.getDefaultState()).create());
IBlockPosQuery emptyHardIce = BlockQuery.buildAnd().withAltitudeBetween(60, 120).withAirBelow().states(BOPBlocks.hard_ice.getDefaultState()).create();
this.addGenerator("ice_crystals", GeneratorStage.ORE_PRE, (new GeneratorCrystals.Builder()).amountPerChunk(25.0F).placeOn(emptyHardIce).with(Blocks.ICE.getDefaultState()).create());
this.addGenerator("glowstone_crystals", GeneratorStage.ORE_PRE, (new GeneratorCrystals.Builder()).amountPerChunk(10.0F).placeOn(emptyHardIce).with(Blocks.GLOWSTONE.getDefaultState()).create());
// splatter top blocks
IBlockPosQuery emptySurface = BlockQuery.buildAnd().withAirAbove().states(this.topBlock).create();
this.addGenerator("snow_splatter", GeneratorStage.SAND, (new GeneratorSplatter.Builder()).amountPerChunk(2.0F).generationAttempts(128).scatterYMethod(ScatterYMethod.NETHER_SURFACE).replace(emptySurface).with(Blocks.SNOW.getDefaultState()).create());
this.addGenerator("snow_splatter", GeneratorStage.SAND, (new GeneratorSplatter.Builder()).amountPerChunk(5.0F).generationAttempts(128).scatterYMethod(ScatterYMethod.NETHER_SURFACE).replace(emptySurface).with(Blocks.SNOW.getDefaultState()).create());
}
@Override
public void applySettings(IBOPWorldSettings settings)
{
if (!settings.isEnabled(GeneratorType.NETHER_HIVES)) {this.removeGenerator("hive");}
}
}

View file

@ -9,6 +9,8 @@ package biomesoplenty.common.biome.nether;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.IBlockPosQuery;
import biomesoplenty.api.config.IBOPWorldSettings;
import biomesoplenty.api.config.IBOPWorldSettings.GeneratorType;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.api.enums.BOPFlowers;
import biomesoplenty.api.enums.BOPPlants;
@ -71,4 +73,16 @@ public class BiomeUndergarden extends BOPHellBiome
this.addGenerator("red_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(2.0F).scatterYMethod(ScatterYMethod.NETHER_SURFACE).with(Blocks.RED_MUSHROOM.getDefaultState()).create());
this.addGenerator("brown_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).scatterYMethod(ScatterYMethod.NETHER_SURFACE).with(Blocks.BROWN_MUSHROOM.getDefaultState()).create());
}
@Override
public void applySettings(IBOPWorldSettings settings)
{
if (!settings.isEnabled(GeneratorType.NETHER_HIVES)) {this.removeGenerator("hive");}
if (!settings.isEnabled(GeneratorType.FLOWERS)) {this.removeGenerator("flowers");}
if (!settings.isEnabled(GeneratorType.GRASSES)) {this.removeGenerator("grass");}
if (!settings.isEnabled(GeneratorType.MUSHROOMS)) {this.removeGenerator("glowshrooms"); this.removeGenerator("toadstools"); this.removeGenerator("flat_mushroom"); this.removeGenerator("blue_milk_caps"); this.removeGenerator("portobellos");}
}
}

View file

@ -10,7 +10,9 @@ package biomesoplenty.common.biome.nether;
import java.util.Random;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.config.IBOPWorldSettings;
import biomesoplenty.api.config.IConfigObj;
import biomesoplenty.api.config.IBOPWorldSettings.GeneratorType;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.api.enums.BOPFlowers;
import biomesoplenty.api.enums.BOPPlants;
@ -57,4 +59,10 @@ public class BiomeVisceralHeap extends BOPHellBiome
this.addGenerator("eyebulbs", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.7F).scatterYMethod(ScatterYMethod.NETHER_SURFACE).with(BlockBOPDoublePlant.DoublePlantType.EYEBULB).create());
}
@Override
public void applySettings(IBOPWorldSettings settings)
{
if (!settings.isEnabled(GeneratorType.NETHER_HIVES)) {this.removeGenerator("hive");}
}
}

View file

@ -1,141 +0,0 @@
/*******************************************************************************
* Copyright 2014-2017, 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.block;
import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.BlockRotatedPillar;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.item.ItemBlock;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class BlockBOPBoneSegment extends BlockRotatedPillar implements IBOPBlock
{
public static enum BoneType implements IStringSerializable
{
SMALL, MEDIUM;
@Override
public String getName()
{
return this.name().toLowerCase();
}
@Override
public String toString()
{
return this.getName();
}
};
public static final PropertyEnum<BoneType> VARIANT = PropertyEnum.create("variant", BoneType.class);
@Override
protected BlockStateContainer createBlockState() {return new BlockStateContainer(this, new IProperty[] { VARIANT, AXIS });}
// implement IBOPBlock
@Override
public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
@Override
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
@Override
public IProperty[] getNonRenderingProperties() { return null; }
@Override
public String getStateName(IBlockState state)
{
return ((BoneType) state.getValue(VARIANT)).getName() + "_bone_segment";
}
@Override
@SideOnly(Side.CLIENT)
public IBlockColor getBlockColor() { return null; }
@Override
@SideOnly(Side.CLIENT)
public IItemColor getItemColor() { return null; }
public BlockBOPBoneSegment()
{
super(Material.ROCK);
// set some defaults
this.setHardness(5.0F);
this.setResistance(10.0F);
this.setSoundType(SoundType.STONE);
this.setHarvestLevel("pickaxe", 0);
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, BoneType.SMALL));
}
@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos)
{
double x1, y1 = 0.0D, z1, x2, y2 = 1.0D, z2;
switch (state.getValue(VARIANT))
{
case SMALL:
x1 = z1 = 0.25D;
x2 = z2 = 0.75D;
break;
case MEDIUM: default:
x1 = z1 = 0.125D;
x2 = z2 = 0.875D;
break;
}
switch (state.getValue(AXIS))
{
case Y:
return new AxisAlignedBB(x1, y1, z1, x2, y2, z2);
case Z:
return new AxisAlignedBB(x1, z1, y1, x2, z2, y2);
default:
return new AxisAlignedBB(y1, x1, z1, y2, x2, z2);
}
}
@Override
public AxisAlignedBB getCollisionBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos)
{
return getBoundingBox(state, world, pos);
}
@Override
public boolean isOpaqueCube(IBlockState state)
{
return false;
}
// map from state to meta and vice verca
@Override
public IBlockState getStateFromMeta(int meta)
{
return super.getStateFromMeta(meta).withProperty(VARIANT, BoneType.values()[meta & 3]);
}
@Override
public int getMetaFromState(IBlockState state)
{
return super.getMetaFromState(state) | state.getValue(VARIANT).ordinal();
}
// our blocks usually drop their current state as opposed to a single 'default' state
@Override
public int damageDropped(IBlockState state)
{
return this.getMetaFromState(state.withProperty(AXIS, EnumFacing.Axis.X));
}
}

View file

@ -10,7 +10,10 @@ package biomesoplenty.common.block;
import java.util.Random;
import javax.annotation.Nullable;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.block.BlockBOPStone.StoneType;
import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.Block;
import net.minecraft.block.BlockDirt;
@ -37,6 +40,7 @@ import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.Explosion;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.EnumPlantType;
@ -95,9 +99,6 @@ public class BlockBOPGrass extends BlockGrass implements IBOPBlock, ISustainsPla
super();
// set some defaults
this.setHardness(0.6F);
this.setHarvestLevel("shovel", 0);
this.setSoundType(SoundType.PLANT);
this.setDefaultState(this.blockState.getBaseState().withProperty(SNOWY, Boolean.valueOf(false)).withProperty(VARIANT, BOPGrassType.LOAMY));
}
@ -116,6 +117,114 @@ public class BlockBOPGrass extends BlockGrass implements IBOPBlock, ISustainsPla
return ((BOPGrassType) state.getValue(VARIANT)).ordinal();
}
@Override
public SoundType getSoundType(IBlockState state, World world, BlockPos pos, @Nullable Entity entity)
{
switch ((BOPGrassType) state.getValue(VARIANT))
{
// overgrown_netherrack supports Nether plants in addition to the defaults
case OVERGROWN_NETHERRACK:
return SoundType.STONE;
case OVERGROWN_STONE:
return SoundType.STONE;
case SPECTRAL_MOSS:
return SoundType.STONE;
default:
return SoundType.PLANT;
}
}
@Override
public Material getMaterial(IBlockState state)
{
switch ((BOPGrassType) state.getValue(VARIANT))
{
// overgrown_netherrack supports Nether plants in addition to the defaults
case OVERGROWN_NETHERRACK:
return Material.ROCK;
case OVERGROWN_STONE:
return Material.ROCK;
case SPECTRAL_MOSS:
return Material.ROCK;
default:
return Material.GRASS;
}
}
@Override
public int getHarvestLevel(IBlockState state)
{
return 0;
}
@Override
public String getHarvestTool(IBlockState state)
{
switch ((BOPGrassType) state.getValue(VARIANT))
{
// overgrown_netherrack supports Nether plants in addition to the defaults
case OVERGROWN_NETHERRACK:
return "pickaxe";
case OVERGROWN_STONE:
return "pickaxe";
case SPECTRAL_MOSS:
return "pickaxe";
default:
return "shovel";
}
}
@Override
public float getBlockHardness(IBlockState state, World world, BlockPos pos)
{
switch ((BOPGrassType) state.getValue(VARIANT))
{
// overgrown_netherrack supports Nether plants in addition to the defaults
case OVERGROWN_NETHERRACK:
return 0.4F;
case OVERGROWN_STONE:
return 1.5F;
case SPECTRAL_MOSS:
return 3.0F;
default:
return 0.6F;
}
}
@Override
public float getExplosionResistance(World world, BlockPos pos, Entity exploder, Explosion explosion)
{
IBlockState state = world.getBlockState(pos);
switch ((BOPGrassType) state.getValue(VARIANT))
{
// overgrown_netherrack supports Nether plants in addition to the defaults
case OVERGROWN_NETHERRACK:
return 0.1F;
case OVERGROWN_STONE:
return 2.0F;
case SPECTRAL_MOSS:
return 3.0F;
default:
return 0.12F;
}
}
@Override
public boolean canSustainPlantType(IBlockAccess world, BlockPos pos, EnumPlantType plantType)
{
@ -356,7 +465,7 @@ public class BlockBOPGrass extends BlockGrass implements IBOPBlock, ISustainsPla
case OVERGROWN_NETHERRACK:
return Blocks.NETHERRACK.getDefaultState();
case OVERGROWN_STONE:
return Blocks.STONE.getDefaultState();
return Blocks.COBBLESTONE.getDefaultState();
case ORIGIN: case DAISY: default:
return Blocks.DIRT.getStateFromMeta(BlockDirt.DirtType.DIRT.getMetadata());
}

View file

@ -20,7 +20,6 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import biomesoplenty.common.biome.vanilla.*;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
@ -30,7 +29,6 @@ import biomesoplenty.api.biome.IExtendedBiome;
import biomesoplenty.api.config.IConfigObj;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.nether.BOPHellBiome;
import biomesoplenty.common.biome.nether.BiomeBoneyard;
import biomesoplenty.common.biome.nether.BiomeCorruptedSands;
import biomesoplenty.common.biome.nether.BiomeFungiForest;
import biomesoplenty.common.biome.nether.BiomePhantasmagoricInferno;
@ -100,6 +98,35 @@ import biomesoplenty.common.biome.overworld.BiomeGenWasteland;
import biomesoplenty.common.biome.overworld.BiomeGenWetland;
import biomesoplenty.common.biome.overworld.BiomeGenWoodland;
import biomesoplenty.common.biome.overworld.BiomeGenXericShrubland;
import biomesoplenty.common.biome.vanilla.BiomeExtBirchForest;
import biomesoplenty.common.biome.vanilla.BiomeExtBirchForestHills;
import biomesoplenty.common.biome.vanilla.BiomeExtColdTaiga;
import biomesoplenty.common.biome.vanilla.BiomeExtColdTaigaHills;
import biomesoplenty.common.biome.vanilla.BiomeExtDesert;
import biomesoplenty.common.biome.vanilla.BiomeExtDesertHills;
import biomesoplenty.common.biome.vanilla.BiomeExtEnd;
import biomesoplenty.common.biome.vanilla.BiomeExtExtremeHills;
import biomesoplenty.common.biome.vanilla.BiomeExtExtremeHillsPlus;
import biomesoplenty.common.biome.vanilla.BiomeExtForest;
import biomesoplenty.common.biome.vanilla.BiomeExtForestHills;
import biomesoplenty.common.biome.vanilla.BiomeExtHell;
import biomesoplenty.common.biome.vanilla.BiomeExtIceMountains;
import biomesoplenty.common.biome.vanilla.BiomeExtIcePlains;
import biomesoplenty.common.biome.vanilla.BiomeExtJungle;
import biomesoplenty.common.biome.vanilla.BiomeExtJungleHills;
import biomesoplenty.common.biome.vanilla.BiomeExtMegaTaiga;
import biomesoplenty.common.biome.vanilla.BiomeExtMegaTaigaHills;
import biomesoplenty.common.biome.vanilla.BiomeExtMesa;
import biomesoplenty.common.biome.vanilla.BiomeExtMesaPlateau;
import biomesoplenty.common.biome.vanilla.BiomeExtMushroomIsland;
import biomesoplenty.common.biome.vanilla.BiomeExtOcean;
import biomesoplenty.common.biome.vanilla.BiomeExtPlains;
import biomesoplenty.common.biome.vanilla.BiomeExtRoofedForest;
import biomesoplenty.common.biome.vanilla.BiomeExtSavanna;
import biomesoplenty.common.biome.vanilla.BiomeExtSavannaPlateau;
import biomesoplenty.common.biome.vanilla.BiomeExtSwampland;
import biomesoplenty.common.biome.vanilla.BiomeExtTaiga;
import biomesoplenty.common.biome.vanilla.BiomeExtTaigaHills;
import biomesoplenty.common.command.BOPCommand;
import biomesoplenty.common.util.config.BOPConfig;
import biomesoplenty.common.world.WorldProviderBOPHell;
@ -302,7 +329,6 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry
addIslandBiome(mangrove, 10);
// nether biomes
boneyard = registerNetherBiome(new BiomeBoneyard());
corrupted_sands = registerNetherBiome(new BiomeCorruptedSands());
fungi_forest = registerNetherBiome(new BiomeFungiForest());
phantasmagoric_inferno = registerNetherBiome(new BiomePhantasmagoricInferno());

View file

@ -10,12 +10,53 @@ package biomesoplenty.common.init;
import static biomesoplenty.api.block.BOPBlocks.*;
import biomesoplenty.common.block.*;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import biomesoplenty.api.enums.BOPWoods;
import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.block.BlockBOPAsh;
import biomesoplenty.common.block.BlockBOPBamboo;
import biomesoplenty.common.block.BlockBOPBiomeBlock;
import biomesoplenty.common.block.BlockBOPCoral;
import biomesoplenty.common.block.BlockBOPCrystal;
import biomesoplenty.common.block.BlockBOPDirt;
import biomesoplenty.common.block.BlockBOPDoor;
import biomesoplenty.common.block.BlockBOPDoubleOtherSlab;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPDoubleWoodSlab;
import biomesoplenty.common.block.BlockBOPFarmland;
import biomesoplenty.common.block.BlockBOPFence;
import biomesoplenty.common.block.BlockBOPFenceGate;
import biomesoplenty.common.block.BlockBOPFlesh;
import biomesoplenty.common.block.BlockBOPFlower;
import biomesoplenty.common.block.BlockBOPGem;
import biomesoplenty.common.block.BlockBOPGemOre;
import biomesoplenty.common.block.BlockBOPGeneric;
import biomesoplenty.common.block.BlockBOPGrass;
import biomesoplenty.common.block.BlockBOPGrassPath;
import biomesoplenty.common.block.BlockBOPHalfOtherSlab;
import biomesoplenty.common.block.BlockBOPHalfWoodSlab;
import biomesoplenty.common.block.BlockBOPHive;
import biomesoplenty.common.block.BlockBOPHoney;
import biomesoplenty.common.block.BlockBOPJelledPoison;
import biomesoplenty.common.block.BlockBOPLeaves;
import biomesoplenty.common.block.BlockBOPLilypad;
import biomesoplenty.common.block.BlockBOPLog;
import biomesoplenty.common.block.BlockBOPMud;
import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.block.BlockBOPPlanks;
import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.block.BlockBOPSapling;
import biomesoplenty.common.block.BlockBOPSeaweed;
import biomesoplenty.common.block.BlockBOPStone;
import biomesoplenty.common.block.BlockBOPStoneFormations;
import biomesoplenty.common.block.BlockBOPStoneStairs;
import biomesoplenty.common.block.BlockBOPTerrarium;
import biomesoplenty.common.block.BlockBOPTurnip;
import biomesoplenty.common.block.BlockBOPVine;
import biomesoplenty.common.block.BlockBOPWoodStairs;
import biomesoplenty.common.block.IBOPBlock;
import biomesoplenty.common.command.BOPCommand;
import biomesoplenty.common.fluids.BloodFluid;
import biomesoplenty.common.fluids.HoneyFluid;
@ -27,13 +68,11 @@ import biomesoplenty.common.fluids.blocks.BlockHoneyFluid;
import biomesoplenty.common.fluids.blocks.BlockHotSpringWaterFluid;
import biomesoplenty.common.fluids.blocks.BlockPoisonFluid;
import biomesoplenty.common.fluids.blocks.BlockQuicksandFluid;
import biomesoplenty.common.util.BOPReflectionHelper;
import biomesoplenty.common.util.block.BlockStateUtils;
import biomesoplenty.common.util.inventory.CreativeTabBOP;
import biomesoplenty.core.BiomesOPlenty;
import net.minecraft.block.Block;
import net.minecraft.block.BlockSlab;
import net.minecraft.block.BlockStairs;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
@ -84,7 +123,6 @@ public class ModBlocks
hive = registerBlock( new BlockBOPHive(), "hive" );
honey_block = registerBlock( new BlockBOPHoney(), "honey_block" );
jelled_poison = registerBlock( new BlockBOPJelledPoison(), "jelled_poison" );
bone_segment = registerBlock( new BlockBOPBoneSegment(), "bone_segment" );
//Material Blocks
bamboo_thatching = registerBlock( (new BlockBOPGeneric(Material.WOOD, SoundType.WOOD)).setHardness(2.0F), "bamboo_thatching"); bamboo_thatching.setHarvestLevel("axe", 0);

View file

@ -57,7 +57,6 @@ public class ModGenerators
registerGenerator("blobs", GeneratorBlobs.class, new GeneratorBlobs.Builder());
registerGenerator("lakes", GeneratorLakes.class, new GeneratorLakes.Builder());
registerGenerator("columns", GeneratorColumns.class, new GeneratorColumns.Builder());
registerGenerator("hell_fossils", GeneratorHellFossils.class, new GeneratorHellFossils.Builder());
registerGenerator("vines", GeneratorVines.class, new GeneratorVines.Builder());
registerGenerator("mixed_lily", GeneratorMixedLily.class, new GeneratorMixedLily.Builder());
registerGenerator("crystals", GeneratorCrystals.class, new GeneratorCrystals.Builder());

View file

@ -92,7 +92,6 @@ public class BOPWorldSettings implements IBOPWorldSettings
public boolean generateLiquidPoison = true;
public boolean generateHotSprings = true;
public boolean generateNetherHives = true;
public boolean generateNetherPlants = true;
public boolean generateEndFeatures = true;
@ -160,7 +159,6 @@ public class BOPWorldSettings implements IBOPWorldSettings
obj.addProperty("generateLiquidPoison", this.generateLiquidPoison);
obj.addProperty("generateHotSprings", this.generateHotSprings);
obj.addProperty("generateNetherHives", this.generateNetherHives);
obj.addProperty("generateNetherPlants", this.generateNetherPlants);
obj.addProperty("generateEndFeatures", this.generateEndFeatures);
obj.addProperty("mainNoiseScaleX", this.mainNoiseScaleX);
obj.addProperty("mainNoiseScaleY", this.mainNoiseScaleY);
@ -203,7 +201,6 @@ public class BOPWorldSettings implements IBOPWorldSettings
this.generateLiquidPoison = worldConfig.getBool("generateLiquidPoison", this.generateLiquidPoison);
this.generateHotSprings = worldConfig.getBool("generateHotSprings", this.generateHotSprings);
this.generateNetherHives = worldConfig.getBool("generateNetherHives", this.generateNetherHives);
this.generateNetherPlants = worldConfig.getBool("generateNetherPlants", this.generateNetherPlants);
this.generateEndFeatures = worldConfig.getBool("generateEndFeatures", this.generateEndFeatures);
this.mainNoiseScaleX = worldConfig.getFloat("mainNoiseScaleX", this.mainNoiseScaleX);
this.mainNoiseScaleY = worldConfig.getFloat("mainNoiseScaleY", this.mainNoiseScaleY);
@ -241,7 +238,6 @@ public class BOPWorldSettings implements IBOPWorldSettings
this.generateLiquidPoison = true;
this.generateHotSprings = true;
this.generateNetherHives = true;
this.generateNetherPlants = true;
this.generateEndFeatures = true;
// Vanilla default values
@ -317,8 +313,6 @@ public class BOPWorldSettings implements IBOPWorldSettings
return this.generateHotSprings;
case NETHER_HIVES:
return this.generateNetherHives;
case NETHER_PLANTS:
return this.generateNetherPlants;
case END_FEATURES:
return this.generateEndFeatures;

View file

@ -1,96 +0,0 @@
/*******************************************************************************
* Copyright 2014-2017, 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.world.generator;
import biomesoplenty.api.config.IConfigObj;
import biomesoplenty.api.generation.BOPGeneratorBase;
import biomesoplenty.common.util.biome.GeneratorUtils;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.Mirror;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Rotation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.world.World;
import net.minecraft.world.gen.structure.StructureBoundingBox;
import net.minecraft.world.gen.structure.template.PlacementSettings;
import net.minecraft.world.gen.structure.template.Template;
import net.minecraft.world.gen.structure.template.TemplateManager;
import java.util.Random;
public class GeneratorHellFossils extends BOPGeneratorBase
{
public static class Builder extends BOPGeneratorBase.InnerBuilder<GeneratorHellFossils.Builder, GeneratorHellFossils> implements IGeneratorBuilder<GeneratorHellFossils>
{
public Builder()
{
// defaults
this.amountPerChunk = 1.0F;
}
@Override
public GeneratorHellFossils create()
{
return new GeneratorHellFossils(this.amountPerChunk);
}
}
public GeneratorHellFossils(float amountPerChunk)
{
super(amountPerChunk);
}
private static final ResourceLocation STRUCTURE_SPINE_01 = new ResourceLocation("fossils/fossil_spine_01");
private static final ResourceLocation STRUCTURE_SPINE_02 = new ResourceLocation("fossils/fossil_spine_02");
private static final ResourceLocation STRUCTURE_SPINE_03 = new ResourceLocation("fossils/fossil_spine_03");
private static final ResourceLocation STRUCTURE_SPINE_04 = new ResourceLocation("fossils/fossil_spine_04");
private static final ResourceLocation[] FOSSILS = new ResourceLocation[] {STRUCTURE_SPINE_01, STRUCTURE_SPINE_02, STRUCTURE_SPINE_03, STRUCTURE_SPINE_04};
@Override
public BlockPos getScatterY(World world, Random random, int x, int z)
{
return GeneratorUtils.ScatterYMethod.NETHER_SURFACE.getBlockPos(world, random, x, z);
}
@Override
public boolean generate(World world, Random random, BlockPos pos)
{
Random chunkRand = world.getChunkFromBlockCoords(pos).getRandomWithSeed(987234911L);
MinecraftServer server = world.getMinecraftServer();
Rotation[] rotationValues = Rotation.values();
// pick a random rotation
Rotation rotation = rotationValues[random.nextInt(rotationValues.length)];
int fossilIndex = chunkRand.nextInt(FOSSILS.length);
TemplateManager fossilTemplate = world.getSaveHandler().getStructureTemplateManager();
// choose a random fossil template
Template template = fossilTemplate.getTemplate(server, FOSSILS[fossilIndex]);
ChunkPos chunkPos = new ChunkPos(pos);
StructureBoundingBox chunkBoundingBox = new StructureBoundingBox(chunkPos.getXStart(), 0, chunkPos.getZStart(), chunkPos.getXEnd(), 256, chunkPos.getZEnd());
PlacementSettings settings = (new PlacementSettings()).setRotation(rotation).setBoundingBox(chunkBoundingBox).setRandom(random);
// offset the fossil slightly on the x and z axis
int xOffset = chunkRand.nextInt(4);
int zOffset = chunkRand.nextInt(4);
// determine the initial position to build the fossil from, accounting for offsets and rotation
BlockPos fossilZero = template.getZeroPositionWithTransform(pos.add(xOffset, -random.nextInt(4), zOffset), Mirror.NONE, rotation);
// allow some blocks to be dropped during rotation to make it look better. only applicable to non 90 degrees angles?
settings.setIntegrity(0.9F);
template.addBlocksToWorld(world, fossilZero, settings, 20);
return true;
}
@Override
public void configure(IConfigObj conf)
{
this.amountPerChunk = conf.getFloat("amountPerChunk", this.amountPerChunk);
}
}

View file

@ -1,13 +0,0 @@
{
"variants": {
"axis=y,variant=small": { "model": "biomesoplenty:small_bone_segment" },
"axis=z,variant=small": { "model": "biomesoplenty:small_bone_segment", "x": 90 },
"axis=x,variant=small": { "model": "biomesoplenty:small_bone_segment", "x": 90, "y": 90 },
"axis=none,variant=small": { "model": "biomesoplenty:small_bone_segment" },
"axis=y,variant=medium": { "model": "biomesoplenty:medium_bone_segment" },
"axis=z,variant=medium": { "model": "biomesoplenty:medium_bone_segment", "x": 90 },
"axis=x,variant=medium": { "model": "biomesoplenty:medium_bone_segment", "x": 90, "y": 90 },
"axis=none,variant=medium": { "model": "biomesoplenty:medium_bone_segment" }
}
}

View file

@ -177,8 +177,6 @@ tile.ash_block.name=Ash Block
tile.bamboo.name=Bamboo
tile.bamboo_thatching.name=Bamboo Thatching
tile.biome_block.name=Biome Essence Ore
tile.bone_segment.small_bone_segment.name=Small Bone Segment
tile.bone_segment.medium_bone_segment.name=Medium Bone Segment
tile.cherry_fence.name=Cherry Fence
tile.cherry_fence_gate.name=Cherry Fence Gate
tile.cherry_wood_slab.name=Cherry Wood Slab

View file

@ -1,21 +0,0 @@
{
"parent": "block/block",
"textures": {
"end": "blocks/bone_block_top",
"side": "blocks/bone_block_side",
"particle": "blocks/bone_block_side"
},
"elements": [
{ "from": [ 2, 0, 2 ],
"to": [ 14, 16, 14 ],
"faces": {
"down": { "uv": [ 4, 4, 12, 12 ], "texture": "#end", "cullface": "down" },
"up": { "uv": [ 4, 4, 12, 12 ], "texture": "#end" },
"north": { "uv": [ 2, 2, 14, 14 ], "texture": "#side", "cullface": "north" },
"south": { "uv": [ 2, 2, 14, 14 ], "texture": "#side", "cullface": "south" },
"west": { "uv": [ 2, 2, 14, 14 ], "texture": "#side", "cullface": "west" },
"east": { "uv": [ 2, 2, 14, 14 ], "texture": "#side", "cullface": "east" }
}
}
]
}

View file

@ -1,21 +0,0 @@
{
"parent": "block/block",
"textures": {
"end": "blocks/bone_block_top",
"side": "blocks/bone_block_side",
"particle": "blocks/bone_block_side"
},
"elements": [
{ "from": [ 4, 0, 4 ],
"to": [ 12, 16, 12 ],
"faces": {
"down": { "uv": [ 6, 6, 10, 10 ], "texture": "#end", "cullface": "down" },
"up": { "uv": [ 6, 6, 10, 10 ], "texture": "#end" },
"north": { "uv": [ 4, 4, 12, 12 ], "texture": "#side", "cullface": "north" },
"south": { "uv": [ 4, 4, 12, 12 ], "texture": "#side", "cullface": "south" },
"west": { "uv": [ 4, 4, 12, 12 ], "texture": "#side", "cullface": "west" },
"east": { "uv": [ 4, 4, 12, 12 ], "texture": "#side", "cullface": "east" }
}
}
]
}

View file

@ -1,3 +0,0 @@
{
"parent": "biomesoplenty:block/medium_bone_segment"
}

View file

@ -1,3 +0,0 @@
{
"parent": "biomesoplenty:block/small_bone_segment"
}