Added black sand/sandstone, changed the Volcano Edge biome into Volcanic Plains

This commit is contained in:
Forstride 2020-07-18 13:30:48 -04:00
parent 0a08fa9694
commit 4aa598b660
133 changed files with 1998 additions and 196 deletions

View file

@ -72,8 +72,8 @@ public class BOPBiomes
public static Optional<Biome> tropic_beach = Optional.empty();
public static Optional<Biome> tropics = Optional.empty();
public static Optional<Biome> tundra = Optional.empty();
public static Optional<Biome> volcanic_plains = Optional.empty();
public static Optional<Biome> volcano = Optional.empty();
public static Optional<Biome> volcano_edge = Optional.empty();
public static Optional<Biome> wasteland = Optional.empty();
public static Optional<Biome> wetland = Optional.empty();
public static Optional<Biome> woodland = Optional.empty();

View file

@ -22,6 +22,18 @@ public class BOPBlocks
public static Block white_sandstone_slab;
public static Block white_sandstone_stairs;
public static Block white_sandstone_wall;
public static Block black_sand;
public static Block black_sandstone;
public static Block cut_black_sandstone;
public static Block cut_black_sandstone_slab;
public static Block chiseled_black_sandstone;
public static Block smooth_black_sandstone;
public static Block smooth_black_sandstone_slab;
public static Block smooth_black_sandstone_stairs;
public static Block black_sandstone_slab;
public static Block black_sandstone_stairs;
public static Block black_sandstone_wall;
public static Block mud;
public static Block mud_bricks;

View file

@ -45,7 +45,7 @@ public class UndergrowthBiome extends NetherBiomeBOP
this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPBiomeFeatures.BRAMBLE.configured(IFeatureConfig.NONE).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(50))));
this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.burning_blossom.defaultBlockState())).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(8))));
this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(50))));
this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(75))));
this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dead_grass.defaultBlockState())).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(40))));
this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.root.defaultBlockState())).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(8))));
this.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPBiomeFeatures.NETHER_VINES.configured(IFeatureConfig.NONE).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(150))));

View file

@ -14,6 +14,8 @@ import biomesoplenty.common.world.biome.BiomeFeatureHelper;
import biomesoplenty.common.world.gen.feature.BOPBiomeFeatures;
import biomesoplenty.common.world.gen.feature.StandardGrassFeature;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
@ -53,6 +55,8 @@ public class OminousWoodsBiome extends BiomeBOP
DefaultBiomeFeatures.addDefaultUndergroundVariety(this);
DefaultBiomeFeatures.addDefaultOres(this);
this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.black_sand.defaultBlockState(), 8, 2, Lists.newArrayList(new BlockState[]{Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()}))).decorated(Placement.COUNT_TOP_SOLID.configured(new FrequencyConfig(3))));
////////////////////////////////////////////////////////////
// Vegetation

View file

@ -0,0 +1,96 @@
/*******************************************************************************
* Copyright 2014-2019, 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 biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeBOP;
import biomesoplenty.common.world.biome.BiomeFeatureHelper;
import biomesoplenty.common.world.gen.feature.BOPBiomeFeatures;
import biomesoplenty.common.world.gen.feature.StandardGrassFeature;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.BiomeAmbience;
import net.minecraft.world.biome.DefaultBiomeFeatures;
import net.minecraft.world.biome.MoodSoundAmbience;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.feature.structure.MineshaftConfig;
import net.minecraft.world.gen.feature.structure.MineshaftStructure;
import net.minecraft.world.gen.placement.*;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class VolcanicPlainsBiome extends BiomeBOP
{
public VolcanicPlainsBiome()
{
super((new Builder()).surfaceBuilder(new ConfiguredSurfaceBuilder(BOPBiomeFeatures.BLACK_SAND_SURFACE_BUILDER, BOPBiomeFeatures.BLACK_SAND_SURFACE)).precipitation(RainType.RAIN).biomeCategory(Category.NONE).depth(0.05F).scale(0.0F).temperature(0.95F).downfall(0.3F).specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()).parent((String)null));
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(this);
this.addStructureStart(DefaultBiomeFeatures.RUINED_PORTAL_STANDARD);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(this);
this.addFeature(GenerationStage.Decoration.LAKES, Feature.LAKE.configured(new BlockStateFeatureConfig(Blocks.LAVA.defaultBlockState())).decorated(Placement.LAVA_LAKE.configured(new ChanceConfig(80))));
DefaultBiomeFeatures.addDefaultMonsterRoom(this);
DefaultBiomeFeatures.addDefaultUndergroundVariety(this);
DefaultBiomeFeatures.addDefaultOres(this);
////////////////////////////////////////////////////////////
// Vegetation
this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPBiomeFeatures.TWIGLET_TREE_VOLCANO.configured(DefaultBiomeFeatures.NORMAL_TREE_CONFIG).decorated(Placement.COUNT_EXTRA_HEIGHTMAP.configured(new AtSurfaceWithExtraConfig(1, 0.1F, 1))));
this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, new StandardGrassFeature(NoFeatureConfig.CODEC).configured(IFeatureConfig.NONE).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(10))));
this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(200))));
this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPBiomeFeatures.GRASS_SPLATTER.configured(IFeatureConfig.NONE).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(25))));
this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPBiomeFeatures.BLACK_SANDSTONE_COLUMN.configured(DefaultBiomeFeatures.SMALL_BASALT_COLUMN_FEATURE_CONFIG).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(1))));
this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.SPRING.configured(BOPBiomeFeatures.VOLCANO_SPRING_CONFIG).decorated(Placement.COUNT_VERY_BIASED_RANGE.configured(new CountRangeConfig(50, 8, 16, 256))));
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(this);
DefaultBiomeFeatures.addSurfaceFreezing(this);
// Entities
this.addSpawn(EntityClassification.MONSTER, new SpawnListEntry(EntityType.SPIDER, 100, 4, 4));
this.addSpawn(EntityClassification.MONSTER, new SpawnListEntry(EntityType.ZOMBIE, 95, 4, 4));
this.addSpawn(EntityClassification.MONSTER, new SpawnListEntry(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
this.addSpawn(EntityClassification.MONSTER, new SpawnListEntry(EntityType.SKELETON, 100, 4, 4));
this.addSpawn(EntityClassification.MONSTER, new SpawnListEntry(EntityType.CREEPER, 100, 4, 4));
this.addSpawn(EntityClassification.MONSTER, new SpawnListEntry(EntityType.SLIME, 100, 4, 4));
this.addSpawn(EntityClassification.MONSTER, new SpawnListEntry(EntityType.ENDERMAN, 10, 1, 4));
this.addSpawn(EntityClassification.MONSTER, new SpawnListEntry(EntityType.WITCH, 5, 1, 1));
this.setBeachBiome((Biome)null);
this.setRiverBiome((Biome)null);
}
@OnlyIn(Dist.CLIENT)
@Override
public int getGrassColor(double x, double z)
{
return 0x4A703B;
}
@OnlyIn(Dist.CLIENT)
@Override
public int getFoliageColor() { return 0x547D42; }
}

View file

@ -55,6 +55,9 @@ public class VolcanoBiome extends BiomeBOP
// Other Features
DefaultBiomeFeatures.addDefaultSprings(this);
this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.SPRING.configured(BOPBiomeFeatures.VOLCANO_SPRING_CONFIG).decorated(Placement.COUNT_VERY_BIASED_RANGE.configured(new CountRangeConfig(75, 8, 16, 256))));
DefaultBiomeFeatures.addExtraEmeralds(this);
DefaultBiomeFeatures.addInfestedStone(this);
DefaultBiomeFeatures.addSurfaceFreezing(this);
@ -70,27 +73,17 @@ public class VolcanoBiome extends BiomeBOP
this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.WITCH, 5, 1, 1));
this.setRiverBiome((Biome)null);
this.setBeachBiome(BOPBiomes.volcano_edge);
}
@OnlyIn(Dist.CLIENT)
@Override
public int getSkyColor()
{
return 0x96A8CA;
}
@OnlyIn(Dist.CLIENT)
@Override
public int getGrassColor(double x, double z)
{
return 0xAD9364;
this.setBeachBiome(BOPBiomes.volcanic_plains);
}
@OnlyIn(Dist.CLIENT)
@Override
public int getFoliageColor()
public int getGrassColor(double x, double z)
{
return 0xB7B763;
return 0x4A703B;
}
@OnlyIn(Dist.CLIENT)
@Override
public int getFoliageColor() { return 0x547D42; }
}

View file

@ -1,107 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, 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 biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.biome.BiomeBOP;
import biomesoplenty.common.world.biome.BiomeFeatureHelper;
import biomesoplenty.common.world.gen.feature.BOPBiomeFeatures;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.BiomeAmbience;
import net.minecraft.world.biome.DefaultBiomeFeatures;
import net.minecraft.world.biome.MoodSoundAmbience;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.feature.structure.MineshaftConfig;
import net.minecraft.world.gen.feature.structure.MineshaftStructure;
import net.minecraft.world.gen.placement.AtSurfaceWithExtraConfig;
import net.minecraft.world.gen.placement.ChanceConfig;
import net.minecraft.world.gen.placement.FrequencyConfig;
import net.minecraft.world.gen.placement.Placement;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class VolcanoEdgeBiome extends BiomeBOP
{
public VolcanoEdgeBiome()
{
super((new Biome.Builder()).surfaceBuilder(new ConfiguredSurfaceBuilder(BOPBiomeFeatures.VOLCANO_EDGE_SURFACE_BUILDER, SurfaceBuilder.CONFIG_STONE)).precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.NONE).depth(1.25F).scale(0.4F).temperature(0.95F).downfall(0.3F).specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()).parent((String)null));
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(this);
this.addStructureStart(DefaultBiomeFeatures.RUINED_PORTAL_MOUNTAIN);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(this);
this.addFeature(GenerationStage.Decoration.LOCAL_MODIFICATIONS, Feature.LAKE.configured(new BlockStateFeatureConfig(Blocks.LAVA.defaultBlockState())).decorated(Placement.LAVA_LAKE.configured(new ChanceConfig(10))));
DefaultBiomeFeatures.addDefaultMonsterRoom(this);
DefaultBiomeFeatures.addDefaultUndergroundVariety(this);
DefaultBiomeFeatures.addDefaultOres(this);
this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.DISK.configured(new SphereReplaceConfig(Blocks.GRAVEL.defaultBlockState(), 6, 2, Lists.newArrayList(new BlockState[]{Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()}))).decorated(Placement.COUNT_TOP_SOLID.configured(new FrequencyConfig(1))));
////////////////////////////////////////////////////////////
// Vegetation
this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BOPBiomeFeatures.DYING_TREE_VOLCANO.configured(DefaultBiomeFeatures.NORMAL_TREE_CONFIG).weighted(0.1F)), BOPBiomeFeatures.DEAD_TREE_VOLCANO.configured(DefaultBiomeFeatures.NORMAL_TREE_CONFIG))).decorated(Placement.COUNT_EXTRA_HEIGHTMAP.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1))));
this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dead_grass.defaultBlockState())).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(2))));
this.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Placement.COUNT_HEIGHTMAP_DOUBLE.configured(new FrequencyConfig(2))));
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(this);
DefaultBiomeFeatures.addExtraEmeralds(this);
DefaultBiomeFeatures.addInfestedStone(this);
DefaultBiomeFeatures.addSurfaceFreezing(this);
// Entities
this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.SPIDER, 100, 4, 4));
this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.ZOMBIE, 95, 4, 4));
this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.SKELETON, 100, 4, 4));
this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.CREEPER, 100, 4, 4));
this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.SLIME, 100, 4, 4));
this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.ENDERMAN, 10, 1, 4));
this.addSpawn(EntityClassification.MONSTER, new Biome.SpawnListEntry(EntityType.WITCH, 5, 1, 1));
this.setRiverBiome((Biome)null);
this.setBeachBiome((Biome)null);
}
@OnlyIn(Dist.CLIENT)
@Override
public int getSkyColor()
{
return 0x96A8CA;
}
@OnlyIn(Dist.CLIENT)
@Override
public int getGrassColor(double x, double z)
{
return 0xAD9364;
}
@OnlyIn(Dist.CLIENT)
@Override
public int getFoliageColor()
{
return 0xB7B763;
}
}

View file

@ -85,11 +85,11 @@ public class FoliageBlockBOP extends BushBlock implements IPlantable
}
if (this == BOPBlocks.dune_grass)
{
return ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand;
return ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand || ground == BOPBlocks.black_sand;
}
if (this == BOPBlocks.desert_grass || this == BOPBlocks.dead_grass)
{
return ground == BOPBlocks.dried_salt || ground == Blocks.GRAVEL || ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand || ground == Blocks.NETHERRACK || super.canSurvive(state, worldIn, pos);
return ground == BOPBlocks.dried_salt || ground == Blocks.GRAVEL || ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand || ground == BOPBlocks.black_sand || ground == Blocks.NETHERRACK || super.canSurvive(state, worldIn, pos);
}
return super.canSurvive(state, worldIn, pos);

View file

@ -12,9 +12,9 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockReader;
import net.minecraftforge.common.PlantType;
public class WhiteSandBlock extends SandBlock
public class SandBlockBOP extends SandBlock
{
public WhiteSandBlock(int p_i48338_1_, Block.Properties properties)
public SandBlockBOP(int p_i48338_1_, Block.Properties properties)
{
super(p_i48338_1_, properties);
}

View file

@ -9,9 +9,11 @@ package biomesoplenty.common.world.gen.feature;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.world.gen.feature.tree.*;
import com.google.common.collect.ImmutableSet;
import net.minecraft.block.Blocks;
import net.minecraft.block.LeavesBlock;
import net.minecraft.block.SaplingBlock;
import net.minecraft.fluid.Fluids;
import net.minecraft.util.Direction;
import net.minecraft.world.gen.carver.WorldCarver;
import net.minecraft.world.gen.feature.*;
@ -78,7 +80,6 @@ public class BOPBiomeFeatures
public static final Feature<BaseTreeFeatureConfig> SPARSE_OAK_TREE = new BigTreeFeature.Builder().maxHeight(10).foliageHeight(2).create();
public static final Feature<BaseTreeFeatureConfig> DYING_TREE = new BigTreeFeature.Builder().log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).maxHeight(10).foliageHeight(2).create();
public static final Feature<BaseTreeFeatureConfig> DYING_TREE_WASTELAND = new BigTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.dried_salt).log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).maxHeight(10).foliageHeight(1).create();
public static final Feature<BaseTreeFeatureConfig> DYING_TREE_VOLCANO = new BigTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRAVEL).log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).maxHeight(10).foliageHeight(2).create();
//Bushes/Twiglets
public static final Feature<BaseTreeFeatureConfig> BUSH = new BushTreeFeature.Builder().create();
@ -101,6 +102,7 @@ public class BOPBiomeFeatures
public static final Feature<BaseTreeFeatureConfig> DEAD_TWIGLET_TREE_SMALL = new TwigletTreeFeature.Builder().minHeight(1).maxHeight(1).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).create();
public static final Feature<BaseTreeFeatureConfig> DEAD_TWIGLET_TREE = new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.05F, 0.25F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(4).maxHeight(7).create();
public static final Feature<BaseTreeFeatureConfig> DEAD_TWIGLET_TREE_TALL = new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.15F, 0.6F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(8).maxHeight(12).create();
public static final Feature<BaseTreeFeatureConfig> TWIGLET_TREE_VOLCANO = new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.black_sand).log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create();
//Special Trees
public static final Feature<BaseTreeFeatureConfig> REDWOOD_TREE = new RedwoodTreeFeature.Builder().create();
@ -110,7 +112,6 @@ public class BOPBiomeFeatures
public static final Feature<BaseTreeFeatureConfig> PALM_TREE = new PalmTreeFeature.Builder().create();
public static final Feature<BaseTreeFeatureConfig> DEAD_TREE = new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create();
public static final Feature<BaseTreeFeatureConfig> DEAD_TREE_WASTELAND = new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.dried_salt).trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create();
public static final Feature<BaseTreeFeatureConfig> DEAD_TREE_VOLCANO = new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRAVEL).trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create();
/////////////////////////////////////////////////////////////////////////////////
@ -136,6 +137,8 @@ public class BOPBiomeFeatures
public static final Feature<NoFeatureConfig> SMALL_CRYSTAL = new SmallCrystalFeature(NoFeatureConfig.CODEC);
public static final Feature<NoFeatureConfig> LARGE_CRYSTAL = new LargeCrystalFeature(NoFeatureConfig.CODEC);
public static final Feature<NoFeatureConfig> FLESH_TENDON = new FleshTendonFeature(NoFeatureConfig.CODEC);
public static final Feature<NoFeatureConfig> GRASS_SPLATTER = new GrassSplatterFeature(NoFeatureConfig.CODEC);
public static final Feature<ColumnConfig> BLACK_SANDSTONE_COLUMN = new BlackSandstoneColumnFeature(ColumnConfig.CODEC);
//Flowers
public static final FlowersFeature CHAPARRAL_FLOWERS = new ChaparralFlowersFeature();
@ -170,13 +173,13 @@ public class BOPBiomeFeatures
public static final SurfaceBuilder<SurfaceBuilderConfig> MUD_SURFACE_BUILDER = new MudSurfaceBuilder(SurfaceBuilderConfig.CODEC);
public static final SurfaceBuilder<SurfaceBuilderConfig> PODZOL_SURFACE_BUILDER = new PodzolSurfaceBuilder(SurfaceBuilderConfig.CODEC);
public static final SurfaceBuilder<SurfaceBuilderConfig> VOLCANO_SURFACE_BUILDER = new VolcanoSurfaceBuilder(SurfaceBuilderConfig.CODEC);
public static final SurfaceBuilder<SurfaceBuilderConfig> VOLCANO_EDGE_SURFACE_BUILDER = new VolcanoEdgeSurfaceBuilder(SurfaceBuilderConfig.CODEC);
public static final SurfaceBuilder<SurfaceBuilderConfig> DEEP_TOP_LAYER = new DeepTopLayerSurfaceBuilder(SurfaceBuilderConfig.CODEC);
public static final SurfaceBuilder<SurfaceBuilderConfig> POPPY_FIELD_SURFACE_BUILDER = new PoppyFieldSurfaceBuilder(SurfaceBuilderConfig.CODEC);
public static final SurfaceBuilder<SurfaceBuilderConfig> WITHERED_ABYSS_SURFACE_BUILDER = new WitheredAbyssSurfaceBuilder(SurfaceBuilderConfig.CODEC);
public static final SurfaceBuilder<SurfaceBuilderConfig> FLESH_SURFACE_BUILDER = new FleshSurfaceBuilder(SurfaceBuilderConfig.CODEC);
public static final SurfaceBuilder<SurfaceBuilderConfig> ORIGIN_HILLS_SURFACE_BUILDER = new OriginHillsSurfaceBuilder(SurfaceBuilderConfig.CODEC);
public static final SurfaceBuilder<SurfaceBuilderConfig> TROPICS_SURFACE_BUILDER = new TropicsSurfaceBuilder(SurfaceBuilderConfig.CODEC);
public static final SurfaceBuilder<SurfaceBuilderConfig> BLACK_SAND_SURFACE_BUILDER = new BlackSandSurfaceBuilder(SurfaceBuilderConfig.CODEC);
public static final SurfaceBuilderConfig BLACKSTONE_SURFACE = new SurfaceBuilderConfig(Blocks.BLACKSTONE.defaultBlockState(), Blocks.BLACKSTONE.defaultBlockState(), Blocks.BLACKSTONE.defaultBlockState());
public static final SurfaceBuilderConfig BASALT_SURFACE = new SurfaceBuilderConfig(Blocks.BASALT.defaultBlockState(), Blocks.BASALT.defaultBlockState(), Blocks.GRAVEL.defaultBlockState());
@ -186,6 +189,7 @@ public class BOPBiomeFeatures
public static final SurfaceBuilderConfig RED_SAND_SURFACE = new SurfaceBuilderConfig(Blocks.RED_SAND.defaultBlockState(), Blocks.RED_SAND.defaultBlockState(), Blocks.RED_SAND.defaultBlockState());
public static final SurfaceBuilderConfig SNOW_SNOW_GRAVEL_SURFACE = new SurfaceBuilderConfig(Blocks.SNOW_BLOCK.defaultBlockState(), Blocks.SNOW_BLOCK.defaultBlockState(), Blocks.GRAVEL.defaultBlockState());
public static final SurfaceBuilderConfig WHITE_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.white_sand.defaultBlockState(), BOPBlocks.white_sand.defaultBlockState(), BOPBlocks.white_sand.defaultBlockState());
public static final SurfaceBuilderConfig BLACK_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.black_sand.defaultBlockState(), BOPBlocks.black_sand.defaultBlockState(), BOPBlocks.black_sand.defaultBlockState());
public static final SurfaceBuilderConfig DRIED_SALT_SURFACE = new SurfaceBuilderConfig(BOPBlocks.dried_salt.defaultBlockState(), BOPBlocks.dried_salt.defaultBlockState(), BOPBlocks.dried_salt.defaultBlockState());
public static final SurfaceBuilderConfig ORIGIN_GRASS_SURFACE = new SurfaceBuilderConfig(BOPBlocks.origin_grass_block.defaultBlockState(), Blocks.DIRT.defaultBlockState(), Blocks.GRAVEL.defaultBlockState());
@ -197,4 +201,7 @@ public class BOPBiomeFeatures
//Carvers
public static final WorldCarver<ProbabilityConfig> ORIGIN_CAVE = new OriginCaveWorldCarver(ProbabilityConfig.CODEC, 256);
//Other
public static final LiquidsConfig VOLCANO_SPRING_CONFIG = new LiquidsConfig(Fluids.LAVA.defaultFluidState(), true, 4, 1, ImmutableSet.of(Blocks.BASALT, Blocks.MAGMA_BLOCK, BOPBlocks.black_sand, BOPBlocks.black_sandstone, Blocks.STONE, Blocks.GRANITE, Blocks.DIORITE, Blocks.ANDESITE));
}

View file

@ -0,0 +1,100 @@
package biomesoplenty.common.world.gen.feature;
import biomesoplenty.api.block.BOPBlocks;
import com.mojang.serialization.Codec;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.chunk.IChunk;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig;
import java.util.Random;
public class BlackSandSurfaceBuilder extends SurfaceBuilder<SurfaceBuilderConfig> {
public BlackSandSurfaceBuilder(Codec<SurfaceBuilderConfig> p_i232124_1_) {
super(p_i232124_1_);
}
public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) {
this.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, config.getTopMaterial(), config.getUnderMaterial(), config.getUnderwaterMaterial(), seaLevel);
}
protected void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, BlockState top, BlockState middle, BlockState bottom, int sealevel) {
BlockState blockstate = top;
BlockState blockstate1 = middle;
BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable();
int i = -1;
int j = (int)(noise / 3.0D + 3.0D + random.nextDouble() * 0.25D);
int k = x & 15;
int l = z & 15;
for(int i1 = startHeight; i1 >= 0; --i1)
{
blockpos$mutable.set(k, i1, l);
BlockState blockstate2 = chunkIn.getBlockState(blockpos$mutable);
if (blockstate2.isAir())
{
i = -1;
}
else if (blockstate2.is(defaultBlock.getBlock()))
{
if (i == -1)
{
if (j <= 0)
{
blockstate = Blocks.AIR.defaultBlockState();
blockstate1 = defaultBlock;
}
else if (i1 >= sealevel - 4 && i1 <= sealevel + 1)
{
blockstate = top;
blockstate1 = middle;
}
if (i1 < sealevel && (blockstate == null || blockstate.isAir()))
{
if (biomeIn.getTemperature(blockpos$mutable.set(x, i1, z)) < 0.15F)
{
blockstate = Blocks.ICE.defaultBlockState();
}
else
{
blockstate = defaultFluid;
}
blockpos$mutable.set(k, i1, l);
}
i = j;
if (i1 >= sealevel - 1)
{
chunkIn.setBlockState(blockpos$mutable, blockstate, false);
}
else if (i1 < sealevel - 7 - j)
{
blockstate = Blocks.AIR.defaultBlockState();
blockstate1 = defaultBlock;
chunkIn.setBlockState(blockpos$mutable, bottom, false);
}
else
{
chunkIn.setBlockState(blockpos$mutable, blockstate1, false);
}
}
else if (i > 0)
{
--i;
chunkIn.setBlockState(blockpos$mutable, blockstate1, false);
if (i == 0 && blockstate1.is(BOPBlocks.black_sand) && j > 1)
{
i = random.nextInt(4) + Math.max(0, i1 - 63);
blockstate1 = BOPBlocks.black_sandstone.defaultBlockState();
}
}
}
}
}
}

View file

@ -0,0 +1,132 @@
package biomesoplenty.common.world.gen.feature;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.block.NetherCrystalBlock;
import biomesoplenty.common.util.block.IBlockPosQuery;
import com.google.common.collect.ImmutableList;
import com.mojang.serialization.Codec;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.BushBlock;
import net.minecraft.state.properties.AttachFace;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.ISeedReader;
import net.minecraft.world.IWorld;
import net.minecraft.world.gen.ChunkGenerator;
import net.minecraft.world.gen.feature.ColumnConfig;
import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.feature.NoFeatureConfig;
import net.minecraft.world.gen.feature.structure.StructureManager;
import javax.annotation.Nullable;
import java.util.Random;
public class BlackSandstoneColumnFeature extends Feature<ColumnConfig> {
private static final ImmutableList<Block> CANNOT_PLACE_ON = ImmutableList.of(Blocks.DARK_OAK_LOG, Blocks.DARK_OAK_LEAVES, Blocks.WATER, Blocks.LAVA, Blocks.BEDROCK, Blocks.MAGMA_BLOCK, Blocks.SOUL_SAND, Blocks.NETHER_BRICKS, Blocks.NETHER_BRICK_FENCE, Blocks.NETHER_BRICK_STAIRS, Blocks.NETHER_WART, Blocks.CHEST, Blocks.SPAWNER);
public BlackSandstoneColumnFeature(Codec<ColumnConfig> p_i231925_1_) {
super(p_i231925_1_);
}
public boolean place(ISeedReader p_230362_1_, StructureManager p_230362_2_, ChunkGenerator p_230362_3_, Random p_230362_4_, BlockPos p_230362_5_, ColumnConfig p_230362_6_) {
int i = p_230362_3_.getSeaLevel();
BlockPos blockpos = findSurface(p_230362_1_, i, p_230362_5_.mutable().clamp(Direction.Axis.Y, 1, p_230362_1_.getMaxBuildHeight() - 1), Integer.MAX_VALUE);
if (blockpos == null) {
return false;
} else {
int j = calculateHeight(p_230362_4_, p_230362_6_);
boolean flag = p_230362_4_.nextFloat() < 0.9F;
int k = Math.min(j, flag ? 5 : 8);
int l = flag ? 50 : 15;
boolean flag1 = false;
for(BlockPos blockpos1 : BlockPos.randomBetweenClosed(p_230362_4_, l, blockpos.getX() - k, blockpos.getY(), blockpos.getZ() - k, blockpos.getX() + k, blockpos.getY(), blockpos.getZ() + k)) {
int i1 = j - blockpos1.distManhattan(blockpos);
if (i1 >= 0) {
flag1 |= this.placeColumn(p_230362_1_, i, blockpos1, i1, calculateReach(p_230362_4_, p_230362_6_));
}
}
return flag1;
}
}
private boolean placeColumn(IWorld p_236248_1_, int p_236248_2_, BlockPos p_236248_3_, int p_236248_4_, int p_236248_5_) {
boolean flag = false;
for(BlockPos blockpos : BlockPos.betweenClosed(p_236248_3_.getX() - p_236248_5_, p_236248_3_.getY(), p_236248_3_.getZ() - p_236248_5_, p_236248_3_.getX() + p_236248_5_, p_236248_3_.getY(), p_236248_3_.getZ() + p_236248_5_)) {
int i = blockpos.distManhattan(p_236248_3_);
BlockPos blockpos1 = isAirOrLavaOcean(p_236248_1_, p_236248_2_, blockpos) ? findSurface(p_236248_1_, p_236248_2_, blockpos.mutable(), i) : findAir(p_236248_1_, blockpos.mutable(), i);
if (blockpos1 != null) {
int j = p_236248_4_ - i / 2;
for(BlockPos.Mutable blockpos$mutable = blockpos1.mutable(); j >= 0; --j) {
if (isAirOrLavaOcean(p_236248_1_, p_236248_2_, blockpos$mutable)) {
this.setBlock(p_236248_1_, blockpos$mutable, BOPBlocks.black_sandstone.defaultBlockState());
blockpos$mutable.move(Direction.UP);
flag = true;
} else {
if (!p_236248_1_.getBlockState(blockpos$mutable).is( BOPBlocks.black_sandstone)) {
break;
}
blockpos$mutable.move(Direction.UP);
}
}
}
}
return flag;
}
@Nullable
private static BlockPos findSurface(IWorld p_236246_0_, int p_236246_1_, BlockPos.Mutable p_236246_2_, int p_236246_3_) {
for(; p_236246_2_.getY() > 1 && p_236246_3_ > 0; p_236246_2_.move(Direction.DOWN)) {
--p_236246_3_;
if (isAirOrLavaOcean(p_236246_0_, p_236246_1_, p_236246_2_)) {
BlockState blockstate = p_236246_0_.getBlockState(p_236246_2_.move(Direction.DOWN));
p_236246_2_.move(Direction.UP);
if (!blockstate.isAir() && !(blockstate.getBlock() instanceof BushBlock) && !CANNOT_PLACE_ON.contains(blockstate.getBlock())) {
return p_236246_2_;
}
}
}
return null;
}
@Nullable
private static BlockPos findAir(IWorld p_236249_0_, BlockPos.Mutable p_236249_1_, int p_236249_2_) {
while(p_236249_1_.getY() < p_236249_0_.getMaxBuildHeight() && p_236249_2_ > 0) {
--p_236249_2_;
BlockState blockstate = p_236249_0_.getBlockState(p_236249_1_);
if (CANNOT_PLACE_ON.contains(blockstate.getBlock())) {
return null;
}
if (blockstate.isAir() || blockstate.getBlock() instanceof BushBlock) {
return p_236249_1_;
}
p_236249_1_.move(Direction.UP);
}
return null;
}
private static int calculateHeight(Random p_236250_0_, ColumnConfig p_236250_1_) {
return p_236250_1_.minimumHeight + p_236250_0_.nextInt(p_236250_1_.maximumHeight - p_236250_1_.minimumHeight + 1);
}
private static int calculateReach(Random p_236251_0_, ColumnConfig p_236251_1_) {
return p_236251_1_.minimumReach + p_236251_0_.nextInt(p_236251_1_.maximumReach - p_236251_1_.minimumReach + 1);
}
private static boolean isAirOrLavaOcean(IWorld p_236247_0_, int p_236247_1_, BlockPos p_236247_2_) {
BlockState blockstate = p_236247_0_.getBlockState(p_236247_2_);
return blockstate.isAir() || blockstate.getBlock() instanceof BushBlock || blockstate.is(Blocks.LAVA) && p_236247_2_.getY() <= p_236247_1_;
}
}

View file

@ -0,0 +1,61 @@
package biomesoplenty.common.world.gen.feature;
import biomesoplenty.api.block.BOPBlocks;
import com.mojang.serialization.Codec;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ISeedReader;
import net.minecraft.world.gen.ChunkGenerator;
import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.feature.NoFeatureConfig;
import net.minecraft.world.gen.feature.structure.StructureManager;
import java.util.Random;
public class GrassSplatterFeature extends Feature<NoFeatureConfig>
{
public GrassSplatterFeature(Codec<NoFeatureConfig> deserializer)
{
super(deserializer);
}
@Override
public boolean place(ISeedReader worldIn, StructureManager structureManager, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config)
{
int i = 0;
int j = rand.nextInt(8 - 2) + 2;
for (int k = pos.getX() - j; k <= pos.getX() + j; ++k)
{
for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l)
{
int i1 = k - pos.getX();
int j1 = l - pos.getZ();
if (i1 * i1 + j1 * j1 <= j * j)
{
for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1)
{
BlockPos blockpos = new BlockPos(k, k1, l);
BlockState blockstate = worldIn.getBlockState(blockpos);
BlockState blockstate1 = worldIn.getBlockState(blockpos.above());
if (blockstate.getBlock() == BOPBlocks.black_sand && blockstate1.isAir(worldIn, blockpos.above()))
{
worldIn.setBlock(blockpos, Blocks.GRASS_BLOCK.defaultBlockState(), 2);
if (rand.nextInt(3) == 0)
{
worldIn.setBlock(blockpos.above(), Blocks.FERN.defaultBlockState(), 2);
}
++i;
break;
}
}
}
}
}
return i > 0;
}
}

View file

@ -1,41 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, 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.gen.feature;
import com.mojang.serialization.Codec;
import net.minecraft.block.BlockState;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.chunk.IChunk;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig;
import java.util.Random;
public class VolcanoEdgeSurfaceBuilder extends SurfaceBuilder<SurfaceBuilderConfig>
{
public VolcanoEdgeSurfaceBuilder(Codec<SurfaceBuilderConfig> deserializer)
{
super(deserializer);
}
@Override
public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) {
if (noise > 2.6D)
{
SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPBiomeFeatures.BASALT_SURFACE);
}
else if (noise > 0.8F)
{
SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_STONE);
}
else
{
SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRAVEL);
}
}
}

View file

@ -49,8 +49,8 @@ public enum BOPBiomeEdgeLayer implements ICastleTransformer
// line BOP redwood forest with BOP redwood forest edge
if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.redwood_forest, BOPBiomes.redwood_forest_edge)) { return outBiomeId[0]; }
// line BOP volcano with BOP volcano edge
if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.volcano, BOPBiomes.volcano_edge)) { return outBiomeId[0]; }
// line BOP volcano with BOP volcanic plains
if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.volcano, BOPBiomes.volcanic_plains)) { return outBiomeId[0]; }
// line mountains with mountain edges
if (this.replaceBiomeEdgeIfNecessary(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, MOUNTAINS, MOUNTAIN_EDGE)) { return outBiomeId[0]; }

View file

@ -65,7 +65,7 @@ public class ModBiomes
registerTechnicalBiome(new TropicBeachBiome(), "tropic_beach");
registerTechnicalBiome(new AlpsFoothillsBiome(), "alps_foothills");
registerTechnicalBiome(new RedwoodForestEdgeBiome(), "redwood_forest_edge");
registerTechnicalBiome(new VolcanoEdgeBiome(), "volcano_edge");
registerTechnicalBiome(new VolcanicPlainsBiome(), "volcanic_plains");
registerTechnicalBiome(new OrchardBiome(), "orchard");
BiomeRegistry.configureTechnicalBiomes();
@ -268,8 +268,8 @@ public class ModBiomes
registerBiomeToDictionary(tropic_beach, Type.OVERWORLD, Type.BEACH, Type.HOT);
registerBiomeToDictionary(tropics, Type.OVERWORLD, Type.JUNGLE, Type.LUSH, Type.HOT);
registerBiomeToDictionary(tundra, Type.OVERWORLD, Type.COLD, Type.WASTELAND, Type.DEAD, Type.SPARSE);
registerBiomeToDictionary(volcanic_plains, Type.OVERWORLD, Type.DEAD, Type.WASTELAND, Type.MOUNTAIN, Type.HOT, Type.DRY);
registerBiomeToDictionary(volcano, Type.OVERWORLD, Type.DEAD, Type.WASTELAND, Type.MOUNTAIN, Type.HOT, Type.DRY);
registerBiomeToDictionary(volcano_edge, Type.OVERWORLD, Type.DEAD, Type.WASTELAND, Type.MOUNTAIN, Type.HOT, Type.DRY);
registerBiomeToDictionary(wasteland, Type.OVERWORLD, Type.WASTELAND, Type.DEAD, Type.DRY, Type.SPARSE, Type.HOT);
registerBiomeToDictionary(wetland, Type.OVERWORLD, Type.SWAMP, Type.FOREST, Type.LUSH, Type.WET, Type.DENSE);
registerBiomeToDictionary(woodland, Type.OVERWORLD, Type.FOREST);
@ -343,8 +343,8 @@ public class ModBiomes
registerVillagerType(tropic_beach, IVillagerType.JUNGLE);
registerVillagerType(tropics, IVillagerType.JUNGLE);
registerVillagerType(tundra, IVillagerType.TAIGA);
registerVillagerType(volcanic_plains, IVillagerType.PLAINS);
registerVillagerType(volcano, IVillagerType.PLAINS);
registerVillagerType(volcano_edge, IVillagerType.PLAINS);
registerVillagerType(wasteland, IVillagerType.DESERT);
registerVillagerType(wetland, IVillagerType.SWAMP);
registerVillagerType(woodland, IVillagerType.PLAINS);

View file

@ -36,7 +36,7 @@ public class ModBlocks
public static void registerBlocks(RegistryEvent.Register<Block> event)
{
//Terrain
white_sand = registerBlock(new WhiteSandBlock(0xF3F1E4, AbstractBlock.Properties.of(Material.SAND, MaterialColor.QUARTZ).strength(0.5F).sound(SoundType.SAND).harvestLevel(0).harvestTool(ToolType.SHOVEL)), "white_sand");
white_sand = registerBlock(new SandBlockBOP(0xF3F1E4, AbstractBlock.Properties.of(Material.SAND, MaterialColor.QUARTZ).strength(0.5F).sound(SoundType.SAND).harvestLevel(0).harvestTool(ToolType.SHOVEL)), "white_sand");
white_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.QUARTZ).strength(0.8F)), "white_sandstone");
white_sandstone_stairs = registerBlock(new StairsBlock(white_sandstone.defaultBlockState(), Block.Properties.copy(white_sandstone)), "white_sandstone_stairs");
white_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(white_sandstone)), "white_sandstone_slab");
@ -48,6 +48,18 @@ public class ModBlocks
cut_white_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(cut_white_sandstone)), "cut_white_sandstone_slab");
chiseled_white_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.QUARTZ).strength(0.8F)), "chiseled_white_sandstone");
black_sand = registerBlock(new SandBlockBOP(0x2D2C2F, AbstractBlock.Properties.of(Material.SAND, MaterialColor.COLOR_BLACK).strength(0.5F).sound(SoundType.SAND).harvestLevel(0).harvestTool(ToolType.SHOVEL)), "black_sand");
black_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_BLACK).strength(0.8F)), "black_sandstone");
black_sandstone_stairs = registerBlock(new StairsBlock(black_sandstone.defaultBlockState(), Block.Properties.copy(black_sandstone)), "black_sandstone_stairs");
black_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(black_sandstone)), "black_sandstone_slab");
black_sandstone_wall = registerBlock(new WallBlock(Block.Properties.copy(black_sandstone)),"black_sandstone_wall");
smooth_black_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_BLACK).strength(2.0F, 6.0F)), "smooth_black_sandstone");
smooth_black_sandstone_stairs = registerBlock(new StairsBlock(black_sandstone.defaultBlockState(), Block.Properties.copy(smooth_black_sandstone)), "smooth_black_sandstone_stairs");
smooth_black_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(smooth_black_sandstone)), "smooth_black_sandstone_slab");
cut_black_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_BLACK).strength(0.8F)), "cut_black_sandstone");
cut_black_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(cut_black_sandstone)), "cut_black_sandstone_slab");
chiseled_black_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_BLACK).strength(0.8F)), "chiseled_black_sandstone");
mud = registerBlock(new MudBlock(AbstractBlock.Properties.of(Material.DIRT, MaterialColor.TERRACOTTA_BROWN).strength(0.6F).harvestLevel(0).harvestTool(ToolType.SHOVEL).sound(new SoundType(1.0F, 0.5F, SoundEvents.SLIME_BLOCK_BREAK, SoundEvents.SLIME_BLOCK_STEP, SoundEvents.SLIME_BLOCK_PLACE, SoundEvents.SLIME_BLOCK_HIT, SoundEvents.SLIME_BLOCK_FALL))), "mud");
mud_bricks = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.TERRACOTTA_BROWN).strength(1.0F)), "mud_bricks");
mud_brick_stairs = registerBlock(new StairsBlock(mud_bricks.defaultBlockState(), Block.Properties.copy(mud_bricks)), "mud_brick_stairs");

View file

@ -91,7 +91,6 @@ public class ModFeatures
registerFeatures(BOPBiomeFeatures.SPARSE_OAK_TREE, "sparse_oak_tree");
registerFeatures(BOPBiomeFeatures.DYING_TREE, "dying_tree");
registerFeatures(BOPBiomeFeatures.DYING_TREE_WASTELAND, "dying_tree_wasteland");
registerFeatures(BOPBiomeFeatures.DYING_TREE_VOLCANO, "dying_tree_volcano");
//Bushes/Twiglets
registerFeatures(BOPBiomeFeatures.BUSH, "bush");
@ -114,6 +113,7 @@ public class ModFeatures
registerFeatures(BOPBiomeFeatures.DEAD_TWIGLET_TREE_SMALL, "dead_twiglet_tree_small");
registerFeatures(BOPBiomeFeatures.DEAD_TWIGLET_TREE, "dead_twiglet_tree");
registerFeatures(BOPBiomeFeatures.DEAD_TWIGLET_TREE_TALL, "dead_twiglet_tree_tall");
registerFeatures(BOPBiomeFeatures.TWIGLET_TREE_VOLCANO, "twiglet_tree_volcano");
//Special Trees
registerFeatures(BOPBiomeFeatures.REDWOOD_TREE, "redwood_tree");
@ -123,7 +123,6 @@ public class ModFeatures
registerFeatures(BOPBiomeFeatures.PALM_TREE, "palm_tree");
registerFeatures(BOPBiomeFeatures.DEAD_TREE, "dead_tree");
registerFeatures(BOPBiomeFeatures.DEAD_TREE_WASTELAND, "dead_tree_wasteland");
registerFeatures(BOPBiomeFeatures.DEAD_TREE_VOLCANO, "dead_tree_volcano");
/////////////////////////////////////////////////////////////////////////////////
@ -149,6 +148,8 @@ public class ModFeatures
registerFeatures(BOPBiomeFeatures.SMALL_CRYSTAL, "small_crystal");
registerFeatures(BOPBiomeFeatures.LARGE_CRYSTAL, "large_crystal");
registerFeatures(BOPBiomeFeatures.FLESH_TENDON, "flesh_tendon");
registerFeatures(BOPBiomeFeatures.GRASS_SPLATTER, "grass_splatter");
registerFeatures(BOPBiomeFeatures.BLACK_SANDSTONE_COLUMN, "black_sandstone_spire");
//Flowers
registerFeatures(BOPBiomeFeatures.CHAPARRAL_FLOWERS, "chaparral_flowers");

View file

@ -21,6 +21,7 @@ import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.placement.AtSurfaceWithExtraConfig;
import net.minecraft.world.gen.placement.FrequencyConfig;
import net.minecraft.world.gen.placement.Placement;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraftforge.common.BiomeDictionary;
import java.util.List;

View file

@ -0,0 +1,10 @@
{
"variants": {
"": [
{ "model": "biomesoplenty:block/black_sand" },
{ "model": "biomesoplenty:block/black_sand", "y": 90 },
{ "model": "biomesoplenty:block/black_sand", "y": 180 },
{ "model": "biomesoplenty:block/black_sand", "y": 270 }
]
}
}

View file

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "biomesoplenty:block/black_sandstone" }
}
}

View file

@ -0,0 +1,7 @@
{
"variants": {
"type=bottom": { "model": "biomesoplenty:block/black_sandstone_slab" },
"type=top": { "model": "biomesoplenty:block/black_sandstone_slab_top" },
"type=double": { "model": "biomesoplenty:block/black_sandstone" }
}
}

View file

@ -0,0 +1,44 @@
{
"variants": {
"facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs" },
"facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer" },
"facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 270, "uvlock": true },
"facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 90, "uvlock": true },
"facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer" },
"facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 180, "uvlock": true },
"facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner" },
"facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 270, "uvlock": true },
"facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 90, "uvlock": true },
"facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner" },
"facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 180, "uvlock": true },
"facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "x": 180, "uvlock": true },
"facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "x": 180, "y": 270, "uvlock": true },
"facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true },
"facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true },
"facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true },
"facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "uvlock": true },
"facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "uvlock": true },
"facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true },
"facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true },
"facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true },
"facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true },
"facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "uvlock": true },
"facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "uvlock": true },
"facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }
}
}

View file

@ -0,0 +1,90 @@
{
"multipart": [
{
"when": {
"up": "true"
},
"apply": {
"model": "biomesoplenty:block/black_sandstone_wall_post"
}
},
{
"when": {
"north": "low"
},
"apply": {
"model": "biomesoplenty:block/black_sandstone_wall_side",
"uvlock": true
}
},
{
"when": {
"east": "low"
},
"apply": {
"model": "biomesoplenty:block/black_sandstone_wall_side",
"y": 90,
"uvlock": true
}
},
{
"when": {
"south": "low"
},
"apply": {
"model": "biomesoplenty:block/black_sandstone_wall_side",
"y": 180,
"uvlock": true
}
},
{
"when": {
"west": "low"
},
"apply": {
"model": "biomesoplenty:block/black_sandstone_wall_side",
"y": 270,
"uvlock": true
}
},
{
"when": {
"north": "tall"
},
"apply": {
"model": "biomesoplenty:block/black_sandstone_wall_side_tall",
"uvlock": true
}
},
{
"when": {
"east": "tall"
},
"apply": {
"model": "biomesoplenty:block/black_sandstone_wall_side_tall",
"y": 90,
"uvlock": true
}
},
{
"when": {
"south": "tall"
},
"apply": {
"model": "biomesoplenty:block/black_sandstone_wall_side_tall",
"y": 180,
"uvlock": true
}
},
{
"when": {
"west": "tall"
},
"apply": {
"model": "biomesoplenty:block/black_sandstone_wall_side_tall",
"y": 270,
"uvlock": true
}
}
]
}

View file

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "biomesoplenty:block/chiseled_black_sandstone" }
}
}

View file

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "biomesoplenty:block/cut_black_sandstone" }
}
}

View file

@ -0,0 +1,7 @@
{
"variants": {
"type=bottom": { "model": "biomesoplenty:block/cut_black_sandstone_slab" },
"type=top": { "model": "biomesoplenty:block/cut_black_sandstone_slab_top" },
"type=double": { "model": "biomesoplenty:block/cut_black_sandstone" }
}
}

View file

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "biomesoplenty:block/smooth_black_sandstone" }
}
}

View file

@ -0,0 +1,7 @@
{
"variants": {
"type=bottom": { "model": "biomesoplenty:block/smooth_black_sandstone_slab" },
"type=top": { "model": "biomesoplenty:block/smooth_black_sandstone_slab_top" },
"type=double": { "model": "biomesoplenty:block/smooth_black_sandstone" }
}
}

View file

@ -0,0 +1,44 @@
{
"variants": {
"facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs" },
"facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer" },
"facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 270, "uvlock": true },
"facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 90, "uvlock": true },
"facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer" },
"facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 180, "uvlock": true },
"facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner" },
"facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 270, "uvlock": true },
"facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 90, "uvlock": true },
"facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner" },
"facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 180, "uvlock": true },
"facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "x": 180, "uvlock": true },
"facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "x": 180, "y": 270, "uvlock": true },
"facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true },
"facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true },
"facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true },
"facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "uvlock": true },
"facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "uvlock": true },
"facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true },
"facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true },
"facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true },
"facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true },
"facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "uvlock": true },
"facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "uvlock": true },
"facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }
}
}

View file

@ -69,8 +69,8 @@
"biome.biomesoplenty.tundra": "Tundra",
"biome.biomesoplenty.undergrowth": "Undergrowth",
"biome.biomesoplenty.visceral_heap": "Visceral Heap",
"biome.biomesoplenty.volcanic_plains": "Volcanic Plains",
"biome.biomesoplenty.volcano": "Volcano",
"biome.biomesoplenty.volcano_edge": "Volcano Edge",
"biome.biomesoplenty.wasteland": "Wasteland",
"biome.biomesoplenty.wetland": "Wetland",
"biome.biomesoplenty.withered_abyss": "Withered Abyss",
@ -94,6 +94,11 @@
"item.biomesoplenty.umbran_boat": "Umbran Boat",
"item.biomesoplenty.willow_boat": "Willow Boat",
"block.biomesoplenty.black_sand": "Black Sand",
"block.biomesoplenty.black_sandstone": "Black Sandstone",
"block.biomesoplenty.black_sandstone_slab": "Black Sandstone Slab",
"block.biomesoplenty.black_sandstone_stairs": "Black Sandstone Stairs",
"block.biomesoplenty.black_sandstone_wall": "Black Sandstone Wall",
"block.biomesoplenty.blue_hydrangea": "Blue Hydrangea",
"block.biomesoplenty.bramble": "Bramble",
"block.biomesoplenty.burning_blossom": "Burning Blossom",
@ -112,6 +117,9 @@
"block.biomesoplenty.cherry_trapdoor": "Cherry Trapdoor",
"block.biomesoplenty.cherry_wall_sign": "Cherry Wall Sign",
"block.biomesoplenty.cherry_wood": "Cherry Wood",
"block.biomesoplenty.chiseled_black_sandstone": "Chiseled Black Sandstone",
"block.biomesoplenty.cut_black_sandstone": "Cut Black Sandstone",
"block.biomesoplenty.cut_black_sandstone_slab": "Cut Black Sandstone Slab",
"block.biomesoplenty.chiseled_white_sandstone": "Chiseled White Sandstone",
"block.biomesoplenty.cut_white_sandstone": "Cut White Sandstone",
"block.biomesoplenty.cut_white_sandstone_slab": "Cut White Sandstone Slab",
@ -304,6 +312,9 @@
"block.biomesoplenty.reed": "Reed",
"block.biomesoplenty.root": "Root",
"block.biomesoplenty.rose": "Rose",
"block.biomesoplenty.smooth_black_sandstone": "Smooth Black Sandstone",
"block.biomesoplenty.smooth_black_sandstone_slab": "Smooth Black Sandstone Slab",
"block.biomesoplenty.smooth_black_sandstone_stairs": "Smooth Black Sandstone Stairs",
"block.biomesoplenty.smooth_white_sandstone": "Smooth White Sandstone",
"block.biomesoplenty.smooth_white_sandstone_slab": "Smooth White Sandstone Slab",
"block.biomesoplenty.smooth_white_sandstone_stairs": "Smooth White Sandstone Stairs",

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "biomesoplenty:block/black_sand"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/cube_bottom_top",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_bottom",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/black_sandstone"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/slab",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_bottom",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/black_sandstone"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/slab_top",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_bottom",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/black_sandstone"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/stairs",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_bottom",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/black_sandstone"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/inner_stairs",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_bottom",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/black_sandstone"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/outer_stairs",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_bottom",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/black_sandstone"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/wall_inventory",
"textures": {
"wall": "biomesoplenty:block/black_sandstone"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_wall_post",
"textures": {
"wall": "biomesoplenty:block/black_sandstone"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_wall_side",
"textures": {
"wall": "biomesoplenty:block/black_sandstone"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_wall_side_tall",
"textures": {
"wall": "biomesoplenty:block/black_sandstone"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "block/cube_column",
"textures": {
"end": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/chiseled_black_sandstone"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "block/cube_column",
"textures": {
"end": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/cut_black_sandstone"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/slab",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_top",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/cut_black_sandstone"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/slab_top",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_top",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/cut_black_sandstone"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "biomesoplenty:block/black_sandstone_top"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/slab",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_top",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/black_sandstone_top"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/slab_top",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_top",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/black_sandstone_top"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/stairs",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_top",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/black_sandstone_top"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/inner_stairs",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_top",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/black_sandstone_top"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "block/outer_stairs",
"textures": {
"bottom": "biomesoplenty:block/black_sandstone_top",
"top": "biomesoplenty:block/black_sandstone_top",
"side": "biomesoplenty:block/black_sandstone_top"
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 361 B

View file

@ -387,17 +387,17 @@
"biome": "biomesoplenty:visceral_heap"
}
},
"volcanic_plains": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:volcanic_plains"
}
},
"volcano": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:volcano"
}
},
"volcano_edge": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:volcano_edge"
}
},
"wasteland": {
"trigger": "minecraft:location",

View file

@ -386,17 +386,17 @@
"biome": "biomesoplenty:visceral_heap"
}
},
"volcanic_plains": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:volcanic_plains"
}
},
"volcano": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:volcano"
}
},
"volcano_edge": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:volcano_edge"
}
},
"wasteland": {
"trigger": "minecraft:location",
@ -493,8 +493,8 @@
"tundra",
"undergrowth",
"visceral_heap",
"volcanic_plains",
"volcano",
"volcano_edge",
"wasteland",
"wetland",
"withered_abyss",

View file

@ -0,0 +1,31 @@
{
"rewards": {
"recipes": [
"biomesoplenty:black_sandstone"
]
},
"criteria": {
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:black_sandstone"
}
},
"has_sand": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sand"
}
]
}
}
},
"requirements": [
[
"has_the_recipe",
"has_sand"
]
]
}

View file

@ -0,0 +1,31 @@
{
"rewards": {
"recipes": [
"biomesoplenty:black_sandstone_slab"
]
},
"criteria": {
"has_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:black_sandstone_slab"
}
}
},
"requirements": [
[
"has_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:black_sandstone_slab_from_black_sandstone_stonecutting"
]
},
"criteria": {
"has_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:black_sandstone_slab_from_black_sandstone_stonecutting"
}
}
},
"requirements": [
[
"has_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,31 @@
{
"rewards": {
"recipes": [
"biomesoplenty:black_sandstone_stairs"
]
},
"criteria": {
"has_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:black_sandstone_stairs"
}
}
},
"requirements": [
[
"has_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:black_sandstone_stairs_from_black_sandstone_stonecutting"
]
},
"criteria": {
"has_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:black_sandstone_stairs_from_black_sandstone_stonecutting"
}
}
},
"requirements": [
[
"has_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,53 @@
{
"rewards": {
"recipes": [
"biomesoplenty:chiseled_black_sandstone"
]
},
"criteria": {
"has_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sandstone"
}
]
}
},
"has_chiseled_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:chiseled_black_sandstone"
}
]
}
},
"has_cut_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:cut_black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:chiseled_black_sandstone"
}
}
},
"requirements": [
[
"has_black_sandstone",
"has_chiseled_black_sandstone",
"has_cut_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:chiseled_black_sandstone_from_black_sandstone_stonecutting"
]
},
"criteria": {
"has_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:chiseled_black_sandstone_from_black_sandstone_stonecutting"
}
}
},
"requirements": [
[
"has_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:cut_black_sandstone_from_black_sandstone_stonecutting"
]
},
"criteria": {
"has_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:cut_black_sandstone_from_black_sandstone_stonecutting"
}
}
},
"requirements": [
[
"has_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:cut_black_sandstone_slab"
]
},
"criteria": {
"has_cut_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:cut_black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:cut_black_sandstone_slab"
}
}
},
"requirements": [
[
"has_cut_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:cut_black_sandstone_slab_from_black_sandstone_stonecutting"
]
},
"criteria": {
"has_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:cut_black_sandstone_slab_from_black_sandstone_stonecutting"
}
}
},
"requirements": [
[
"has_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:cut_black_sandstone_slab_from_cut_black_sandstone_stonecutting"
]
},
"criteria": {
"has_cut_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:cut_black_sandstone_slab_from_cut_black_sandstone_stonecutting"
}
}
},
"requirements": [
[
"has_cut_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,31 @@
{
"rewards": {
"recipes": [
"biomesoplenty:smooth_black_sandstone"
]
},
"criteria": {
"has_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:smooth_black_sandstone"
}
}
},
"requirements": [
[
"has_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:smooth_black_sandstone_slab"
]
},
"criteria": {
"has_smooth_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:smooth_black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:smooth_black_sandstone_slab"
}
}
},
"requirements": [
[
"has_smooth_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:smooth_black_sandstone_slab_from_smooth_black_sandstone_stonecutting"
]
},
"criteria": {
"has_smooth_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:smooth_black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:smooth_black_sandstone_slab_from_smooth_black_sandstone_stonecutting"
}
}
},
"requirements": [
[
"has_smooth_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:smooth_black_sandstone_stairs"
]
},
"criteria": {
"has_smooth_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:smooth_black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:smooth_black_sandstone_stairs"
}
}
},
"requirements": [
[
"has_smooth_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:smooth_black_sandstone_stairs_from_smooth_black_sandstone_stonecutting"
]
},
"criteria": {
"has_smooth_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:smooth_black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:smooth_black_sandstone_stairs_from_smooth_black_sandstone_stonecutting"
}
}
},
"requirements": [
[
"has_smooth_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:black_sandstone_wall"
]
},
"criteria": {
"has_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:black_sandstone_wall"
}
}
},
"requirements": [
[
"has_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"biomesoplenty:black_sandstone_wall_from_black_sandstone_stonecutting"
]
},
"criteria": {
"has_black_sandstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "biomesoplenty:black_sandstone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "biomesoplenty:black_sandstone_wall_from_black_sandstone_stonecutting"
}
}
},
"requirements": [
[
"has_black_sandstone",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "biomesoplenty:black_sand"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "biomesoplenty:black_sandstone"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -0,0 +1,32 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"function": "minecraft:set_count",
"conditions": [
{
"condition": "minecraft:block_state_property",
"block": "biomesoplenty:black_sandstone_slab",
"properties": {
"type": "double"
}
}
],
"count": 2
},
{
"function": "minecraft:explosion_decay"
}
],
"name": "biomesoplenty:black_sandstone_slab"
}
]
}
]
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "biomesoplenty:black_sandstone_stairs"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "biomesoplenty:black_sandstone_wall"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "biomesoplenty:chiseled_black_sandstone"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "biomesoplenty:cut_black_sandstone"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -0,0 +1,32 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"function": "minecraft:set_count",
"conditions": [
{
"condition": "minecraft:block_state_property",
"block": "biomesoplenty:cut_black_sandstone_slab",
"properties": {
"type": "double"
}
}
],
"count": 2
},
{
"function": "minecraft:explosion_decay"
}
],
"name": "biomesoplenty:cut_black_sandstone_slab"
}
]
}
]
}

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "biomesoplenty:smooth_black_sandstone"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -0,0 +1,32 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"functions": [
{
"function": "minecraft:set_count",
"conditions": [
{
"condition": "minecraft:block_state_property",
"block": "biomesoplenty:smooth_black_sandstone_slab",
"properties": {
"type": "double"
}
}
],
"count": 2
},
{
"function": "minecraft:explosion_decay"
}
],
"name": "biomesoplenty:smooth_black_sandstone_slab"
}
]
}
]
}

Some files were not shown because too many files have changed in this diff Show more