Merge remote-tracking branch 'upstream/BOP-1.8.9-3.0.x' into BOP-1.8.9-3.0.x

This commit is contained in:
GirafiStudios 2016-02-11 04:49:00 +01:00
commit 9090d1713f
178 changed files with 1806 additions and 162 deletions

View file

@ -53,6 +53,8 @@ public class BOPBiome extends BiomeGenBase implements IExtendedBiome
public boolean canGenerateVillages = true;
public boolean canGenerateRivers = true;
public int beachBiomeId = BiomeGenBase.beach.biomeID;
public TerrainSettings terrainSettings = new TerrainSettings();
public boolean noNeighborTerrainInfuence = false;
public int avgDirtDepth = 3;
@ -68,7 +70,7 @@ public class BOPBiome extends BiomeGenBase implements IExtendedBiome
this.theBiomeDecorator.grassPerChunk = -999;
this.theBiomeDecorator.sandPerChunk = -999;
this.theBiomeDecorator.sandPerChunk2 = -999;
this.theBiomeDecorator.generateLakes = false;
this.theBiomeDecorator.generateLakes = false;
// roots
this.addGenerator("roots", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(4.0F).with(BOPPlants.ROOT).create());
@ -104,6 +106,8 @@ public class BOPBiome extends BiomeGenBase implements IExtendedBiome
this.canGenerateVillages = conf.getBool("canGenerateVillages", this.canGenerateVillages);
this.canGenerateRivers = conf.getBool("canGenerateRivers", this.canGenerateRivers);
this.beachBiomeId = conf.getInt("beachBiomeId", this.beachBiomeId);
// Allow weights to be overridden
IConfigObj confWeights = conf.getObject("weights");
if (confWeights != null)
@ -359,6 +363,12 @@ public class BOPBiome extends BiomeGenBase implements IExtendedBiome
}
}
}
@Override
public int getBeachId()
{
return this.beachBiomeId;
}
@Override
public BiomeGenBase getBaseBiome()

View file

@ -54,6 +54,7 @@ public class BOPBiomes
public static Optional<BiomeGenBase> mountain = Optional.absent();
public static Optional<BiomeGenBase> mystic_grove = Optional.absent();
public static Optional<BiomeGenBase> ominous_woods = Optional.absent();
public static Optional<BiomeGenBase> orchard = Optional.absent();
public static Optional<BiomeGenBase> origin_valley = Optional.absent();
public static Optional<BiomeGenBase> outback = Optional.absent();
public static Optional<BiomeGenBase> overgrown_cliffs = Optional.absent();
@ -78,9 +79,11 @@ public class BOPBiomes
// edge-biomes, sub-biomes and mutated-biomes
public static Optional<BiomeGenBase> mountain_foothills = Optional.absent();
public static Optional<BiomeGenBase> canyon_ravine = Optional.absent();
public static Optional<BiomeGenBase> oasis = Optional.absent();
public static Optional<BiomeGenBase> coral_reef = Optional.absent();
public static Optional<BiomeGenBase> kelp_forest = Optional.absent();
public static Optional<BiomeGenBase> tropical_island = Optional.absent();
public static Optional<BiomeGenBase> volcanic_island = Optional.absent();
public static Optional<BiomeGenBase> gravel_beach = Optional.absent();
//Biome extensions

View file

@ -19,6 +19,8 @@ public class ExtendedBiomeWrapper implements IExtendedBiome
private GenerationManager generationManager = new GenerationManager();
private Map<BOPClimates, Integer> weightMap = new HashMap<BOPClimates, Integer>();
public int beachBiomeId = BiomeGenBase.beach.biomeID;
public ExtendedBiomeWrapper(BiomeGenBase biome)
{
this.biome = biome;
@ -33,6 +35,8 @@ public class ExtendedBiomeWrapper implements IExtendedBiome
@Override
public void configure(IConfigObj conf)
{
this.beachBiomeId = conf.getInt("beachBiomeId", this.beachBiomeId);
// Allow generators to be configured
IConfigObj confGenerators = conf.getObject("generators");
if (confGenerators != null)
@ -89,6 +93,12 @@ public class ExtendedBiomeWrapper implements IExtendedBiome
{
this.weightMap.clear();
}
@Override
public int getBeachId()
{
return this.beachBiomeId;
}
@Override
public BiomeGenBase getBaseBiome()

View file

@ -30,6 +30,8 @@ public interface IExtendedBiome
public void clearWeights();
public void addWeight(BOPClimates climate, int weight);
public int getBeachId();
/**Get the base biome associated with this extension**/
public BiomeGenBase getBaseBiome();
}

View file

@ -32,12 +32,14 @@ public class BOPBlocks
public static Block log_1;
public static Block log_2;
public static Block log_3;
public static Block log_4;
public static Block leaves_0;
public static Block leaves_1;
public static Block leaves_2;
public static Block leaves_3;
public static Block leaves_4;
public static Block leaves_5;
public static Block leaves_6;
public static Block sapling_0;
public static Block sapling_1;
public static Block sapling_2;
@ -61,6 +63,8 @@ public class BOPBlocks
public static Block hellbark_stairs;
public static Block jacaranda_stairs;
public static Block mahogany_stairs;
public static Block ebony_stairs;
public static Block eucalyptus_stairs;
public static Block sacred_oak_fence;
public static Block cherry_fence;
public static Block umbran_fence;
@ -75,6 +79,8 @@ public class BOPBlocks
public static Block hellbark_fence;
public static Block jacaranda_fence;
public static Block mahogany_fence;
public static Block ebony_fence;
public static Block eucalyptus_fence;
public static Block sacred_oak_fence_gate;
public static Block cherry_fence_gate;
public static Block umbran_fence_gate;
@ -89,6 +95,8 @@ public class BOPBlocks
public static Block hellbark_fence_gate;
public static Block jacaranda_fence_gate;
public static Block mahogany_fence_gate;
public static Block ebony_fence_gate;
public static Block eucalyptus_fence_gate;
public static Block sacred_oak_door;
public static Block cherry_door;
public static Block umbran_door;
@ -103,7 +111,8 @@ public class BOPBlocks
public static Block hellbark_door;
public static Block jacaranda_door;
public static Block mahogany_door;
public static Block ebony_door;
public static Block eucalyptus_door;
public static Block mud;
public static Block sand;

View file

@ -65,6 +65,8 @@ public class BOPItems
public static Item hellbark_door;
public static Item jacaranda_door;
public static Item mahogany_door;
public static Item ebony_door;
public static Item eucalyptus_door;
public static Item wood_slab_0;
public static Item wood_slab_1;

View file

@ -59,6 +59,8 @@ public class BiomeGenBayou extends BOPBiome
this.canSpawnInBiome = false;
this.canGenerateRivers = false;
this.canGenerateVillages = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.HOT_SWAMP, 10);

View file

@ -18,6 +18,7 @@ import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
@ -58,6 +59,11 @@ public class BiomeGenBog extends BOPBiome
this.canGenerateRivers = false;
this.canGenerateVillages = false;
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.addWeight(BOPClimates.COLD_SWAMP, 7);
this.spawnableWaterCreatureList.clear();

View file

@ -8,6 +8,7 @@ import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.block.BlockBOPDoublePlant;
@ -39,6 +40,11 @@ public class BiomeGenBorealForest extends BOPBiome
this.canGenerateVillages = false;
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 5, 4, 4));
// sand and gravel

View file

@ -1,6 +1,5 @@
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockFlower;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.block.material.Material;
@ -17,13 +16,13 @@ import biomesoplenty.common.block.BlockBOPSand;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.enums.BOPTrees;
import biomesoplenty.common.enums.BOPWoods;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorLakes;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorSplotches;
import biomesoplenty.common.world.feature.GeneratorWaterside;
import biomesoplenty.common.world.feature.tree.GeneratorBasicTree;
import biomesoplenty.common.world.feature.tree.GeneratorBigTree;
@ -54,10 +53,10 @@ public class BiomeGenBrushland extends BOPBiome
// trees & logs
GeneratorWeighted treeGenerator = new GeneratorWeighted(6.0F);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("brush", 1, (new GeneratorBasicTree.Builder()).log(BlockPlanks.EnumType.JUNGLE).leaves(BlockPlanks.EnumType.OAK).minHeight(3).maxHeight(5).leafLayers(2).create());
treeGenerator.add("brush_twiglet", 2, (new GeneratorTwigletTree.Builder()).minHeight(1).maxHeight(2).log(BlockPlanks.EnumType.JUNGLE).leaves(BlockPlanks.EnumType.OAK).create());
treeGenerator.add("brush", 1, (new GeneratorBasicTree.Builder()).log(BlockPlanks.EnumType.ACACIA).leaves(BlockPlanks.EnumType.ACACIA).minHeight(3).maxHeight(5).leafLayers(2).create());
treeGenerator.add("brush_twiglet", 2, (new GeneratorTwigletTree.Builder()).minHeight(1).maxHeight(2).log(BOPWoods.EBONY).leaves(BOPTrees.EBONY).create());
treeGenerator.add("brush_bush", 3, (new GeneratorFlora.Builder()).placeOn(this.topBlock).replace(Material.air).withNonDecayingLeaf(BlockPlanks.EnumType.OAK).generationAttempts(8).create());
treeGenerator.add("decaying_tree", 2, (new GeneratorBigTree.Builder()).amountPerChunk(1.0F).log(BlockPlanks.EnumType.ACACIA).leaves(BlockPlanks.EnumType.ACACIA).minHeight(4).maxHeight(10).foliageHeight(1).create());
treeGenerator.add("decaying_tree", 2, (new GeneratorBigTree.Builder()).amountPerChunk(1.0F).log(BOPWoods.EBONY).leaves(BOPTrees.EBONY).minHeight(4).maxHeight(10).foliageHeight(1).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(9.0F);

View file

@ -49,6 +49,8 @@ public class BiomeGenCanyon extends BOPBiome
this.canSpawnInBiome = false;
this.canGenerateVillages = false;
this.beachBiomeId = -1;
this.spawnableCreatureList.clear();

View file

@ -6,6 +6,7 @@ import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
@ -43,6 +44,11 @@ public class BiomeGenConiferousForest extends BOPBiome
this.setTemperatureRainfall(0.45F, 0.5F);
this.canGenerateVillages = false;
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.addWeight(BOPClimates.BOREAL, 10);

View file

@ -20,6 +20,7 @@ import biomesoplenty.common.world.feature.GeneratorColumns;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenBase;
public class BiomeGenCoralReef extends BOPBiome
{
@ -34,6 +35,8 @@ public class BiomeGenCoralReef extends BOPBiome
this.canGenerateVillages = false;
this.canGenerateRivers = false;
this.beachBiomeId = BiomeGenBase.ocean.biomeID;
clearWeights();
// coral

View file

@ -30,6 +30,8 @@ public class BiomeGenCrag extends BOPBiome
this.canGenerateVillages = false;
this.canGenerateRivers = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.COLD_SWAMP, 1);
this.spawnableCreatureList.clear();

View file

@ -12,6 +12,7 @@ import net.minecraft.block.BlockTallGrass;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
@ -44,6 +45,11 @@ public class BiomeGenDeadForest extends BOPBiome
this.canSpawnInBiome = false;
this.canGenerateVillages = false;
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.setColor(0xBCA165);
this.setTemperatureRainfall(0.3F, 0.3F);

View file

@ -59,6 +59,8 @@ public class BiomeGenDeadSwamp extends BOPBiome
this.canGenerateRivers = false;
this.canGenerateVillages = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.COLD_SWAMP, 3);
this.spawnableCreatureList.clear();

View file

@ -23,6 +23,8 @@ import biomesoplenty.common.entities.EntityButterfly;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.enums.BOPTrees;
import biomesoplenty.common.enums.BOPWoods;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
@ -53,7 +55,7 @@ public class BiomeGenEucalyptusForest extends BOPBiome
GeneratorWeighted treeGenerator = new GeneratorWeighted(10);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("oak_bush", 8, (new GeneratorBush.Builder()).maxHeight(2).create());
treeGenerator.add("tall_eucalyptus", 1, (new GeneratorBulbTree.Builder()).minHeight(15).maxHeight(30).log(BlockPlanks.EnumType.JUNGLE).leaves(BlockPlanks.EnumType.JUNGLE).create());
treeGenerator.add("tall_eucalyptus", 1, (new GeneratorBulbTree.Builder()).minHeight(15).maxHeight(30).log(BOPWoods.EUCALYPTUS).leaves(BOPTrees.EUCALYPTUS).create());
// TODO: Add Eucalyptus wood as a new wood type - the bark is quite special
// grasses

View file

@ -16,6 +16,7 @@ import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
@ -63,6 +64,11 @@ public class BiomeGenFen extends BOPBiome
this.canGenerateRivers = false;
this.canGenerateVillages = false;
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.addWeight(BOPClimates.COLD_SWAMP, 7);
this.spawnableCreatureList.add(new SpawnListEntry(EntitySnail.class, 8, 1, 2));

View file

@ -56,6 +56,8 @@ public class BiomeGenFungiForest extends BOPBiome
this.canSpawnInBiome = false;
this.canGenerateVillages = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.TROPICAL, 1);

View file

@ -13,6 +13,7 @@ import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BlockQueries;
@ -45,6 +46,11 @@ public class BiomeGenGrassland extends BOPBiome {
this.addWeight(BOPClimates.COOL_TEMPERATE, 7);
this.addWeight(BOPClimates.WET_TEMPERATE, 3);
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.canGenerateVillages = true;
this.spawnableCreatureList.add(new SpawnListEntry(EntityHorse.class, 5, 2, 6));

View file

@ -26,7 +26,7 @@ public class BiomeGenGravelBeach extends BOPBiome
public BiomeGenGravelBeach()
{
// terrain
this.terrainSettings.avgHeight(64).heightVariation(5, 5);
this.terrainSettings.avgHeight(64).heightVariation(3, 4);
this.setColor(0x908884);

View file

@ -11,6 +11,7 @@ package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenBase;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
@ -40,6 +41,8 @@ public class BiomeGenHighland extends BOPBiome
this.addWeight(BOPClimates.COOL_TEMPERATE, 7);
this.beachBiomeId = -1;
// boulders
this.addGenerator("boulders", GeneratorStage.SAND, (new GeneratorBlobs.Builder()).amountPerChunk(0.5F).placeOn(Blocks.grass).with(Blocks.cobblestone.getDefaultState()).minRadius(0.3F).maxRadius(1.2F).numBalls(1).scatterYMethod(ScatterYMethod.AT_SURFACE).create());
this.addGenerator("big_boulders", GeneratorStage.SAND, (new GeneratorBlobs.Builder()).amountPerChunk(0.1F).placeOn(Blocks.grass).with(Blocks.cobblestone.getDefaultState()).minRadius(0.3F).maxRadius(4.0F).numBalls(3).scatterYMethod(ScatterYMethod.AT_SURFACE).create());

View file

@ -20,6 +20,7 @@ import biomesoplenty.common.world.feature.GeneratorColumns;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenBase;
public class BiomeGenKelpForest extends BOPBiome
{
@ -34,6 +35,8 @@ public class BiomeGenKelpForest extends BOPBiome
this.canGenerateVillages = false;
this.canGenerateRivers = false;
this.beachBiomeId = BiomeGenBase.ocean.biomeID;
clearWeights();
// algae

View file

@ -16,6 +16,7 @@ import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
@ -63,6 +64,11 @@ public class BiomeGenLandOfLakes extends BOPBiome
this.addWeight(BOPClimates.COLD_SWAMP, 3);
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.spawnableWaterCreatureList.clear();
this.spawnableCreatureList.add(new SpawnListEntry(EntitySnail.class, 8, 1, 2));

View file

@ -64,6 +64,8 @@ public class BiomeGenLushSwamp extends BOPBiome
this.canGenerateRivers = false;
this.canGenerateVillages = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.WET_TEMPERATE, 10);
this.spawnableWaterCreatureList.clear();

View file

@ -8,6 +8,7 @@ import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.block.BlockBOPDoublePlant;
@ -40,6 +41,11 @@ public class BiomeGenMapleWoods extends BOPBiome
this.canGenerateVillages = false;
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 5, 4, 4));
// sand and gravel

View file

@ -56,6 +56,8 @@ public class BiomeGenMarsh extends BOPBiome
this.canGenerateRivers = false;
this.canGenerateVillages = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.WET_TEMPERATE, 7);
this.spawnableCreatureList.clear(); // none of your regular farmyard critters here

View file

@ -7,6 +7,7 @@ import net.minecraft.block.BlockTallGrass;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
@ -44,6 +45,11 @@ public class BiomeGenMeadow extends BOPBiome
this.canGenerateVillages = true;
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.spawnableCreatureList.add(new SpawnListEntry(EntitySnail.class, 6, 1, 2));
this.spawnableCreatureList.add(new SpawnListEntry(EntityButterfly.class, 6, 2, 4));

View file

@ -11,6 +11,7 @@ package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
@ -48,6 +49,8 @@ public class BiomeGenMoor extends BOPBiome
this.canSpawnInBiome = false;
this.canGenerateVillages = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.COLD_SWAMP, 5);
this.spawnableWaterCreatureList.clear();

View file

@ -80,6 +80,8 @@ public class BiomeGenMountain extends BOPBiome
this.setColor(0x80A355);
this.setTemperatureRainfall(0.3F, 0.1F);
this.beachBiomeId = BiomeGenBase.stoneBeach.biomeID;
if (type == MountainType.PEAKS)
{
this.canGenerateVillages = false;

View file

@ -59,6 +59,8 @@ public class BiomeGenMysticGrove extends BOPBiome
this.canGenerateVillages = false;
this.canSpawnInBiome = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.WET_TEMPERATE, 1);
this.spawnableCreatureList.clear(); // none of your regular farmyard critters here

View file

@ -0,0 +1,119 @@
/*******************************************************************************
* Copyright 2015-2016, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import java.util.Random;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.BlockQueries;
import biomesoplenty.common.block.BlockBOPCoral;
import biomesoplenty.common.enums.BOPFlowers;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorColumns;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorLakes;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorWaterside;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.ChunkPrimer;
public class BiomeGenOasis extends BOPBiome
{
public IBlockState usualTopBlock;
public IBlockState alternateTopBlock;
public BiomeGenOasis()
{
// terrain
this.terrainSettings.avgHeight(64).heightVariation(5, 3);
this.setTemperatureRainfall(2.0F, 0.5F);
this.setColor(7712283);
this.canSpawnInBiome = false;
this.canGenerateVillages = false;
this.canGenerateRivers = false;
this.topBlock = Blocks.sand.getDefaultState();
this.fillerBlock = Blocks.sand.getDefaultState();
this.usualTopBlock = this.topBlock;
this.alternateTopBlock = Blocks.grass.getDefaultState();
clearWeights();
// oases
this.addGenerator("oases", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(20).maxRadius(7).replace(Blocks.sand.getDefaultState()).with(Blocks.grass.getDefaultState()).create());
// lakes
this.addGenerator("lakes", GeneratorStage.SAND, (new GeneratorLakes.Builder()).amountPerChunk(1.5F).waterLakeForBiome(this).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(4.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("shortgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.SHORTGRASS).create());
grassGenerator.add("mediumgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
// other plants
this.addGenerator("sprouts", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.8F).with(BOPPlants.SPROUT).create());
this.addGenerator("desertgrass", GeneratorStage.GRASS, (new GeneratorGrass.Builder()).amountPerChunk(1.5F).with(BOPPlants.DESERTGRASS).generationAttempts(8).create());
this.addGenerator("bromeliad", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder().amountPerChunk(0.5F).with(BOPFlowers.BROMELIAD).generationAttempts(8).create()));
this.addGenerator("tiny_cacti", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.6F).with(BOPPlants.TINYCACTUS).create());
this.addGenerator("cacti", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(0.4F).generationAttempts(3).placeOn(this.topBlock).with(Blocks.cactus.getDefaultState()).minHeight(1).maxHeight(2).create());
// water plants
this.addGenerator("algae", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(3.0F).replace(Blocks.water).with(BOPBlocks.coral.getDefaultState().withProperty(BlockBOPCoral.VARIANT, BlockBOPCoral.CoralType.ALGAE)).scatterYMethod(ScatterYMethod.AT_GROUND).create());
// gem
this.addGenerator("ruby", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.RUBY).create());
}
@Override
public void configure(IConfigObj conf)
{
super.configure(conf);
this.usualTopBlock = this.topBlock;
this.alternateTopBlock = conf.getBlockState("alternateTopBlock", this.alternateTopBlock);
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("ruby");}
if (!settings.generateBopFoliage) {this.removeGenerator("caveweed"); this.removeGenerator("bushes"); this.removeGenerator("koru"); this.removeGenerator("shrubs"); this.removeGenerator("leaf_piles"); this.removeGenerator("dead_leaf_piles"); this.removeGenerator("clover_patches"); this.removeGenerator("sprouts");}
if (!settings.generateBopPlants) {this.removeGenerator("cattail"); this.removeGenerator("double_cattail"); this.removeGenerator("river_cane"); this.removeGenerator("tiny_cacti"); this.removeGenerator("roots"); this.removeGenerator("rafflesia"); this.removeGenerator("desert_sprouts");}
GeneratorWeighted grassGen = (GeneratorWeighted)this.getGenerator("grass");
if (!settings.generateBopGrasses) {grassGen.removeGenerator("shortgrass"); grassGen.removeGenerator("mediumgrass"); grassGen.removeGenerator("wheatgrass"); grassGen.removeGenerator("dampgrass");}
}
@Override
public void genTerrainBlocks(World world, Random rand, ChunkPrimer primer, int x, int z, double noise)
{
this.topBlock = (noise + rand.nextDouble() * 1.0D > 1.8D) ? this.alternateTopBlock : this.usualTopBlock;
super.genTerrainBlocks(world, rand, primer, x, z, noise);
}
}

View file

@ -69,6 +69,8 @@ public class BiomeGenOminousWoods extends BOPBiome
this.canGenerateVillages = false;
this.canSpawnInBiome = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.COLD_SWAMP, 1);
this.spawnableCreatureList.clear(); // none of your regular farmyard critters here

View file

@ -0,0 +1,120 @@
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.block.BlockBOPDirt;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPGrass;
import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.entities.EntityButterfly;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPFlowers;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorWaterside;
import biomesoplenty.common.world.feature.tree.GeneratorBasicTree;
import biomesoplenty.common.world.feature.tree.GeneratorBigTree;
import biomesoplenty.common.world.feature.tree.GeneratorTaigaTree;
import net.minecraft.block.BlockPlanks.EnumType;
import net.minecraft.block.BlockFlower;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;
public class BiomeGenOrchard extends BOPBiome
{
public BiomeGenOrchard()
{
// terrain
this.terrainSettings.avgHeight(64).heightVariation(4, 15);
this.setColor(14024557);
this.setTemperatureRainfall(0.7F, 0.7F);
this.addWeight(BOPClimates.WARM_TEMPERATE, 3);
this.canGenerateVillages = true;
this.spawnableCreatureList.add(new SpawnListEntry(EntityHorse.class, 1, 2, 6));
this.spawnableCreatureList.add(new SpawnListEntry(EntityButterfly.class, 6, 2, 4));
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(4);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("oak_large", 1, (new GeneratorBigTree.Builder()).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(15);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("shortgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.SHORTGRASS).create());
grassGenerator.add("mediumgrass", 3, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("wheatgrass", 4, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 6, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(1.5F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("white_anemones", 1, (new GeneratorFlora.Builder().with(BOPFlowers.WHITE_ANEMONE).generationAttempts(16).create()));
flowerGenerator.add("houstonia", 1, (new GeneratorFlora.Builder().with(BlockFlower.EnumFlowerType.HOUSTONIA).create()));
flowerGenerator.add("oxeye_daisy", 1, (new GeneratorFlora.Builder().with(BlockFlower.EnumFlowerType.OXEYE_DAISY).create()));
flowerGenerator.add("dandelion", 1, (new GeneratorFlora.Builder().with(BlockFlower.EnumFlowerType.DANDELION).create()));
flowerGenerator.add("poppy", 1, (new GeneratorFlora.Builder().with(BlockFlower.EnumFlowerType.POPPY).create()));
// other plants
this.addGenerator("berry_bushes", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(BOPPlants.BERRYBUSH).generationAttempts(8).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create());
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1).with(BOPPlants.REED).generationAttempts(32).create());
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(1).with(BOPPlants.LEAFPILE).generationAttempts(32).create());
this.addGenerator("flax", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).generationAttempts(8).create());
// shrooms
this.addGenerator("portobellos", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(1).with(BlockBOPMushroom.MushroomType.PORTOBELLO).create());
// gem
this.addGenerator("peridot", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.PERIDOT).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("peridot");}
if (!settings.generateFlax) {this.removeGenerator("flax");}
if (!settings.generateBerryBushes) {this.removeGenerator("berry_bushes");}
if (!settings.generateBopFoliage) {this.removeGenerator("caveweed"); this.removeGenerator("bushes"); this.removeGenerator("koru"); this.removeGenerator("shrubs"); this.removeGenerator("leaf_piles"); this.removeGenerator("dead_leaf_piles"); this.removeGenerator("clover_patches"); this.removeGenerator("sprouts");}
if (!settings.generateBopMushrooms) {this.removeGenerator("toadstools"); this.removeGenerator("flat_mushroom"); this.removeGenerator("blue_milk_caps"); this.removeGenerator("portobellos");}
if (!settings.generateBopPlants) {this.removeGenerator("cattail"); this.removeGenerator("double_cattail"); this.removeGenerator("river_cane"); this.removeGenerator("tiny_cacti"); this.removeGenerator("roots"); this.removeGenerator("rafflesia"); this.removeGenerator("desert_sprouts");}
if (!settings.generateBopWaterPlants) {this.removeGenerator("algae"); this.removeGenerator("water_reeds"); this.removeGenerator("algae"); this.removeGenerator("duckweed"); this.removeGenerator("medium_lily"); this.removeGenerator("small_lily"); this.removeGenerator("tiny_lily");}
GeneratorWeighted flowerGen = (GeneratorWeighted)this.getGenerator("flowers");
if (!settings.generateBopFlowers) {flowerGen.removeGenerator("bluebells"); flowerGen.removeGenerator("clover"); flowerGen.removeGenerator("swampflower"); flowerGen.removeGenerator("deathbloom"); flowerGen.removeGenerator("glowflower"); flowerGen.removeGenerator("blue_hydrangeas"); flowerGen.removeGenerator("pink_daffodil"); flowerGen.removeGenerator("white_anemones"); flowerGen.removeGenerator("orange_cosmos"); flowerGen.removeGenerator("wildflowers"); flowerGen.removeGenerator("violet"); flowerGen.removeGenerator("hibiscus"); flowerGen.removeGenerator("goldenrods"); flowerGen.removeGenerator("icy_irises"); flowerGen.removeGenerator("wilted_lily"); flowerGen.removeGenerator("lily_of_the_valley"); flowerGen.removeGenerator("bromeliad"); this.removeGenerator("bromeliad");}
GeneratorWeighted grassGen = (GeneratorWeighted)this.getGenerator("grass");
if (!settings.generateBopGrasses) {grassGen.removeGenerator("shortgrass"); grassGen.removeGenerator("mediumgrass"); grassGen.removeGenerator("wheatgrass"); grassGen.removeGenerator("dampgrass");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 14024557;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 14024557;
}
}

View file

@ -13,7 +13,9 @@ import net.minecraft.block.BlockFlower;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.passive.EntityOcelot;
import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
@ -46,8 +48,11 @@ public class BiomeGenOvergrownCliffs extends BOPBiome
this.canGenerateVillages = false;
this.addWeight(BOPClimates.TROPICAL, 2);
this.beachBiomeId = -1;
this.spawnableCreatureList.clear();
this.spawnableMonsterList.add(new SpawnListEntry(EntityOcelot.class, 2, 1, 1));
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(40.0F);

View file

@ -84,13 +84,13 @@ public class BiomeGenPrairie extends BOPBiome
this.addGenerator("portobellos", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(2).with(BlockBOPMushroom.MushroomType.PORTOBELLO).create());
// gem
this.addGenerator("tanzanite", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.TANZANITE).create());
this.addGenerator("peridot", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.PERIDOT).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("tanzanite");}
if (!settings.generateBopGems) {this.removeGenerator("peridot");}
if (!settings.generateFlax) {this.removeGenerator("flax");}
if (!settings.generateBerryBushes) {this.removeGenerator("berry_bushes");}

View file

@ -53,6 +53,8 @@ public class BiomeGenQuagmire extends BOPBiome
this.canGenerateRivers = false;
this.canGenerateVillages = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.COLD_SWAMP, 2);
this.spawnableCreatureList.clear();

View file

@ -47,6 +47,8 @@ public class BiomeGenRainforest extends BOPBiome
this.canGenerateVillages = false;
this.canGenerateRivers = false;
this.beachBiomeId = -1;
this.spawnableMonsterList.add(new SpawnListEntry(EntityOcelot.class, 2, 1, 1));
this.spawnableCreatureList.add(new SpawnListEntry(EntityButterfly.class, 6, 2, 4));

View file

@ -45,6 +45,8 @@ public class BiomeGenSacredSprings extends BOPBiome
this.canGenerateRivers = false;
this.canGenerateVillages = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.TROPICAL, 1);
this.spawnableMonsterList.add(new SpawnListEntry(EntityOcelot.class, 2, 1, 1));

View file

@ -8,6 +8,7 @@ import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.block.BlockBOPDoublePlant;
@ -40,6 +41,11 @@ public class BiomeGenSeasonalForest extends BOPBiome
this.canGenerateVillages = false;
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 5, 4, 4));
this.spawnableCreatureList.add(new SpawnListEntry(EntitySnail.class, 6, 1, 2));

View file

@ -22,6 +22,7 @@ import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.chunk.ChunkPrimer;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
@ -67,6 +68,11 @@ public class BiomeGenShield extends BOPBiome
this.canGenerateVillages = false;
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.addWeight(BOPClimates.BOREAL, 5);
// gravel

View file

@ -14,6 +14,7 @@ import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
@ -48,6 +49,11 @@ public class BiomeGenShrubland extends BOPBiome
this.canGenerateVillages = true;
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.spawnableCreatureList.add(new SpawnListEntry(EntityHorse.class, 5, 2, 6));
this.spawnableCreatureList.add(new SpawnListEntry(EntityButterfly.class, 6, 2, 4));

View file

@ -18,6 +18,7 @@ import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.chunk.ChunkPrimer;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
@ -59,6 +60,11 @@ public class BiomeGenSteppe extends BOPBiome
this.addWeight(BOPClimates.DRY_TEMPERATE, 5);
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.spawnableCreatureList.add(new SpawnListEntry(EntityHorse.class, 5, 2, 6));
// should the Steppe not have some splattered gravel and coarse dirt?

View file

@ -10,6 +10,7 @@ import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
@ -54,6 +55,11 @@ public class BiomeGenTemperateRainforest extends BOPBiome
this.addWeight(BOPClimates.WET_TEMPERATE, 7);
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.spawnableCreatureList.add(new SpawnListEntry(EntitySnail.class, 6, 1, 2));
// sand and gravel

View file

@ -28,6 +28,7 @@ import biomesoplenty.common.world.feature.GeneratorOreSingle;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockFlower;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.entity.passive.EntityOcelot;
import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;

View file

@ -12,6 +12,7 @@ import net.minecraft.block.BlockTallGrass;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.enums.BOPClimates;
@ -42,7 +43,12 @@ public class BiomeGenTundra extends BOPBiome
this.canGenerateRivers = false;
this.canSpawnInBiome = false;
this.canGenerateVillages = true;
this.canGenerateVillages = false;
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.spawnableCreatureList.clear();

View file

@ -0,0 +1,59 @@
/*******************************************************************************
* Copyright 2015-2016, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.init.Blocks;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.util.block.BlockQuery;
import biomesoplenty.common.util.block.BlockQuery.IBlockPosQuery;
import biomesoplenty.common.world.feature.GeneratorLakes;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorSplotches;
public class BiomeGenVolcanicIsland extends BOPBiome
{
public BiomeGenVolcanicIsland()
{
// terrain
this.terrainSettings.avgHeight(120).heightVariation(50, 50).octaves(1, 1, 2, 2, 3, 2).sidewaysNoise(0.1D);
this.setTemperatureRainfall(1.2F, 0.5F);
this.setColor(6645093);
this.topBlock = BOPBlocks.ash_block.getDefaultState();
this.fillerBlock = BOPBlocks.ash_block.getDefaultState();
this.canSpawnInBiome = false;
this.canGenerateVillages = false;
this.canGenerateRivers = false;
this.theBiomeDecorator.generateLakes = false;
this.beachBiomeId = -1;
this.avgDirtDepth = 16;
this.spawnableCreatureList.clear();
this.spawnableMonsterList.clear();
clearWeights();
// lava
IBlockPosQuery emptyAshBlock = BlockQuery.buildAnd().withAirAbove().states(this.topBlock).create();
this.addGenerator("lava_flows", GeneratorStage.FLOWERS,(new GeneratorSplotches.Builder()).placeOn(emptyAshBlock).replace(BOPBlocks.ash_block).amountPerChunk(0.1F).splotchSize(12).scatterYMethod(ScatterYMethod.AT_SURFACE).with(Blocks.flowing_lava.getDefaultState()).create());
this.addGenerator("lava_lakes", GeneratorStage.SAND, (new GeneratorLakes.Builder()).amountPerChunk(2.5F).lavaLake().create());
// gem
this.addGenerator("emeralds", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(Blocks.emerald_ore.getDefaultState()).create());
}
}

View file

@ -62,6 +62,8 @@ public class BiomeGenWasteland extends BOPBiome
this.canGenerateVillages = false;
this.canSpawnInBiome = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.WASTELAND, 50);
this.spawnableCreatureList.clear();

View file

@ -61,6 +61,8 @@ public class BiomeGenWetland extends BOPBiome
this.canGenerateRivers = false;
this.canGenerateVillages = false;
this.beachBiomeId = -1;
this.addWeight(BOPClimates.WET_TEMPERATE, 7);
this.addWeight(BOPClimates.COLD_SWAMP, 5);

View file

@ -15,6 +15,7 @@ import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.block.BlockBOPDoublePlant;
@ -52,6 +53,11 @@ public class BiomeGenWoodland extends BOPBiome
this.addWeight(BOPClimates.WARM_TEMPERATE, 10);
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
this.spawnableCreatureList.add(new SpawnListEntry(EntitySnail.class, 6, 1, 2));
this.spawnableCreatureList.add(new SpawnListEntry(EntityButterfly.class, 6, 2, 4));

View file

@ -2,6 +2,7 @@ package biomesoplenty.common.biome.vanilla;
import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenBase;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.ExtendedBiomeWrapper;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
@ -22,6 +23,11 @@ public class BiomeExtBirchForest extends ExtendedBiomeWrapper
{
super(BiomeGenBase.birchForest);
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(2.5F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);

View file

@ -4,6 +4,7 @@ import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockFlower.EnumFlowerType;
import net.minecraft.init.Blocks;
import net.minecraft.world.biome.BiomeGenBase;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.ExtendedBiomeWrapper;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
@ -24,6 +25,11 @@ public class BiomeExtForest extends ExtendedBiomeWrapper
{
super(BiomeGenBase.forest);
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(5.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);

View file

@ -1,6 +1,7 @@
package biomesoplenty.common.biome.vanilla;
import net.minecraft.world.biome.BiomeGenBase;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.ExtendedBiomeWrapper;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
@ -19,6 +20,11 @@ public class BiomeExtRoofedForest extends ExtendedBiomeWrapper
{
super(BiomeGenBase.roofedForest);
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(2.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);

View file

@ -1,6 +1,7 @@
package biomesoplenty.common.biome.vanilla;
import net.minecraft.world.biome.BiomeGenBase;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.ExtendedBiomeWrapper;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
@ -18,6 +19,11 @@ public class BiomeExtTaiga extends ExtendedBiomeWrapper
{
super(BiomeGenBase.taiga);
if (BOPBiomes.gravel_beach.isPresent())
{
this.beachBiomeId = BOPBiomes.gravel_beach.get().biomeID;
}
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(0.5F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);

View file

@ -54,8 +54,8 @@ public class BlockBOPAsh extends BlockBOPGeneric
return;
}
}
entity.motionX *= 0.4D;
entity.motionZ *= 0.4D;
entity.motionX *= 0.8D;
entity.motionZ *= 0.8D;
}
@Override

View file

@ -144,7 +144,7 @@ public class BlockBOPLeaves extends BlockLeaves implements IBOPBlock
return ColoringType.PLAIN;
case FLOWERING:
return ColoringType.OVERLAY;
case MAHOGANY: case MANGROVE: case PALM: case PINE: case REDWOOD: case SACRED_OAK: case WILLOW: default:
case MAHOGANY: case MANGROVE: case PALM: case PINE: case REDWOOD: case SACRED_OAK: case WILLOW: case EBONY: case EUCALYPTUS: default:
return ColoringType.TINTED;
}
}

View file

@ -175,7 +175,7 @@ public class BlockBOPSapling extends BlockBOPDecoration implements IGrowable {
case ETHEREAL: //Not implemented
return new WorldGenTrees(true);
case ORIGIN:
return new GeneratorBasicTree.Builder().amountPerChunk(4).minHeight(5).maxHeight(8).leaves(BOPTrees.ORIGIN).create();
return new GeneratorBasicTree.Builder().minHeight(5).maxHeight(8).leaves(BOPTrees.ORIGIN).create();
case PINK_CHERRY:
return new GeneratorBasicTree.Builder().log(BOPWoods.CHERRY).leaves(BOPTrees.PINK_CHERRY).create();
case WHITE_CHERRY:
@ -202,6 +202,10 @@ public class BlockBOPSapling extends BlockBOPDecoration implements IGrowable {
return new GeneratorPineTree.Builder().minHeight(6).maxHeight(18).log(BOPWoods.PINE).leaves(BOPTrees.PINE).create();
case MAHOGANY:
return new GeneratorMahoganyTree.Builder().create();
case EBONY:
return new GeneratorBigTree.Builder().log(BOPWoods.EBONY).leaves(BOPTrees.EBONY).minHeight(4).maxHeight(10).foliageHeight(1).create();
case EUCALYPTUS: //Not implemented
return new GeneratorBulbTree.Builder().minHeight(15).maxHeight(30).log(BOPWoods.EUCALYPTUS).leaves(BOPTrees.EUCALYPTUS).create();
default:
return null;
}

View file

@ -16,7 +16,7 @@ import com.google.common.base.Predicate;
public enum BOPTrees implements IStringSerializable, IPagedVariants
{
YELLOW_AUTUMN, ORANGE_AUTUMN, BAMBOO, MAGIC, UMBRAN, DEAD, FIR, ETHEREAL, ORIGIN, PINK_CHERRY, WHITE_CHERRY, MAPLE, HELLBARK, FLOWERING, JACARANDA, SACRED_OAK, MANGROVE, PALM, REDWOOD, WILLOW, PINE, MAHOGANY, RED_BIG_FLOWER, YELLOW_BIG_FLOWER;
YELLOW_AUTUMN, ORANGE_AUTUMN, BAMBOO, MAGIC, UMBRAN, DEAD, FIR, ETHEREAL, ORIGIN, PINK_CHERRY, WHITE_CHERRY, MAPLE, HELLBARK, FLOWERING, JACARANDA, SACRED_OAK, MANGROVE, PALM, REDWOOD, WILLOW, PINE, MAHOGANY, EBONY, EUCALYPTUS, RED_BIG_FLOWER, YELLOW_BIG_FLOWER;
@Override
public String getName() {

View file

@ -16,7 +16,7 @@ import com.google.common.base.Predicate;
public enum BOPWoods implements IStringSerializable, IPagedVariants
{
SACRED_OAK, CHERRY, UMBRAN, FIR, ETHEREAL, MAGIC, MANGROVE, PALM, REDWOOD, WILLOW, PINE, HELLBARK, JACARANDA, MAHOGANY, GIANT_FLOWER, DEAD;
SACRED_OAK, CHERRY, UMBRAN, FIR, ETHEREAL, MAGIC, MANGROVE, PALM, REDWOOD, WILLOW, PINE, HELLBARK, JACARANDA, MAHOGANY, EBONY, EUCALYPTUS, GIANT_FLOWER, DEAD;
@Override
public String getName() {

View file

@ -56,8 +56,10 @@ import static biomesoplenty.api.biome.BOPBiomes.moor;
import static biomesoplenty.api.biome.BOPBiomes.mountain;
import static biomesoplenty.api.biome.BOPBiomes.mountain_foothills;
import static biomesoplenty.api.biome.BOPBiomes.mystic_grove;
import static biomesoplenty.api.biome.BOPBiomes.oasis;
import static biomesoplenty.api.biome.BOPBiomes.ominous_woods;
import static biomesoplenty.api.biome.BOPBiomes.origin_valley;
import static biomesoplenty.api.biome.BOPBiomes.orchard;
import static biomesoplenty.api.biome.BOPBiomes.outback;
import static biomesoplenty.api.biome.BOPBiomes.overgrown_cliffs;
import static biomesoplenty.api.biome.BOPBiomes.plains_extension;
@ -79,6 +81,7 @@ import static biomesoplenty.api.biome.BOPBiomes.temperate_rainforest;
import static biomesoplenty.api.biome.BOPBiomes.tropical_island;
import static biomesoplenty.api.biome.BOPBiomes.tropical_rainforest;
import static biomesoplenty.api.biome.BOPBiomes.tundra;
import static biomesoplenty.api.biome.BOPBiomes.volcanic_island;
import static biomesoplenty.api.biome.BOPBiomes.wasteland;
import static biomesoplenty.api.biome.BOPBiomes.wetland;
import static biomesoplenty.api.biome.BOPBiomes.woodland;
@ -138,7 +141,9 @@ import biomesoplenty.common.biome.overworld.BiomeGenMeadow;
import biomesoplenty.common.biome.overworld.BiomeGenMoor;
import biomesoplenty.common.biome.overworld.BiomeGenMountain;
import biomesoplenty.common.biome.overworld.BiomeGenMysticGrove;
import biomesoplenty.common.biome.overworld.BiomeGenOasis;
import biomesoplenty.common.biome.overworld.BiomeGenOminousWoods;
import biomesoplenty.common.biome.overworld.BiomeGenOrchard;
import biomesoplenty.common.biome.overworld.BiomeGenOriginValley;
import biomesoplenty.common.biome.overworld.BiomeGenOutback;
import biomesoplenty.common.biome.overworld.BiomeGenOvergrownCliffs;
@ -156,6 +161,7 @@ import biomesoplenty.common.biome.overworld.BiomeGenTemperateRainforest;
import biomesoplenty.common.biome.overworld.BiomeGenTropicalIsland;
import biomesoplenty.common.biome.overworld.BiomeGenTropicalRainforest;
import biomesoplenty.common.biome.overworld.BiomeGenTundra;
import biomesoplenty.common.biome.overworld.BiomeGenVolcanicIsland;
import biomesoplenty.common.biome.overworld.BiomeGenWasteland;
import biomesoplenty.common.biome.overworld.BiomeGenWetland;
import biomesoplenty.common.biome.overworld.BiomeGenWoodland;
@ -240,11 +246,13 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry
initSubBiomes();
initMutatedBiomes();
initExtendedBiomes();
registerBiomes();
registerBiomeDictionaryTags();
//After normal biomes to account for adding custom beaches
initExtendedBiomes();
// save the biome ids to the config file (creating it if it doesn't exist)
BOPConfig.writeFile(biomeIdMapFile, biomeIdMap);
@ -310,29 +318,12 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry
setSubBiome(BiomeGenBase.extremeHillsPlus, BiomeGenBase.getBiome(BiomeGenBase.extremeHillsPlus.biomeID + 128));
setSubBiome(BiomeGenBase.megaTaigaHills, BiomeGenBase.getBiome(BiomeGenBase.megaTaigaHills.biomeID + 128));
}
public static void initExtendedBiomes()
{
biomeWrapperMap = new HashMap<Integer, IExtendedBiome>();
end_extension = registerWrappedBiome(new BiomeExtEnd(), "end");
birch_forest_extension = registerWrappedBiome(new BiomeExtBirchForest(), "birch_forest");
desert_extension = registerWrappedBiome(new BiomeExtDesert(), "desert");
extreme_hills_extension = registerWrappedBiome(new BiomeExtExtremeHills(), "extreme_hills");
forest_extension = registerWrappedBiome(new BiomeExtForest(), "forest");
ice_plains_extension = registerWrappedBiome(new BiomeExtIcePlains(), "ice_plains");
jungle_extension = registerWrappedBiome(new BiomeExtJungle(), "jungle");
mesa_extension = registerWrappedBiome(new BiomeExtMesa(), "mesa");
plains_extension = registerWrappedBiome(new BiomeExtPlains(), "plains");
roofed_forest_extension = registerWrappedBiome(new BiomeExtRoofedForest(), "roofed_forest");
savanna_extension = registerWrappedBiome(new BiomeExtSavanna(), "savanna");
swampland_extension = registerWrappedBiome(new BiomeExtSwampland(), "swampland");
taiga_extension = registerWrappedBiome(new BiomeExtTaiga(), "taiga");
}
private static void registerBiomes()
{
// beach biomes (normal biomes rely on these being registered first)
gravel_beach = registerBOPBiome(new BiomeGenGravelBeach(), "Gravel Beach");
// normal biomes which have weights
alps = registerBOPBiome(new BiomeGenAlps(), "Alps");
@ -371,6 +362,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry
mountain = registerBOPBiome(new BiomeGenMountain(BiomeGenMountain.MountainType.PEAKS), "Mountain");
mystic_grove = registerBOPBiome(new BiomeGenMysticGrove(), "Mystic Grove");
ominous_woods = registerBOPBiome(new BiomeGenOminousWoods(), "Ominous Woods");
orchard = registerBOPBiome(new BiomeGenOrchard(), "Orchard");
origin_valley = registerBOPBiome(new BiomeGenOriginValley(), "Origin Valley");
outback = registerBOPBiome(new BiomeGenOutback(), "Outback");
overgrown_cliffs = registerBOPBiome(new BiomeGenOvergrownCliffs(), "Overgrown Cliffs");
@ -396,19 +388,42 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry
mountain_foothills = registerBOPBiome(new BiomeGenMountain(BiomeGenMountain.MountainType.FOOTHILLS), "Mountain Foothills");
canyon_ravine = registerBOPBiome(new BiomeGenCanyon(BiomeGenCanyon.CanyonType.RAVINE), "Canyon Ravine");
oasis = registerBOPBiome(new BiomeGenOasis(), "Oasis");
coral_reef = registerBOPBiome(new BiomeGenCoralReef(), "Coral Reef");
kelp_forest = registerBOPBiome(new BiomeGenKelpForest(), "Kelp Forest");
gravel_beach = registerBOPBiome(new BiomeGenGravelBeach(), "Gravel Beach");
setSubBiome(canyon, canyon_ravine);
setSubBiome(Optional.of(BiomeGenBase.desert), BOPBiomes.oasis);
setSubBiome(Optional.of(BiomeGenBase.ocean), BOPBiomes.coral_reef);
setSubBiome(Optional.of(BiomeGenBase.ocean), BOPBiomes.kelp_forest);
// island biomes
tropical_island = registerBOPBiome(new BiomeGenTropicalIsland(), "Tropical Island");
volcanic_island = registerBOPBiome(new BiomeGenVolcanicIsland(), "Volcanic Island");
addIslandBiome(tropical_island, 10);
addIslandBiome(volcanic_island, 3);
}
public static void initExtendedBiomes()
{
biomeWrapperMap = new HashMap<Integer, IExtendedBiome>();
end_extension = registerWrappedBiome(new BiomeExtEnd(), "end");
birch_forest_extension = registerWrappedBiome(new BiomeExtBirchForest(), "birch_forest");
desert_extension = registerWrappedBiome(new BiomeExtDesert(), "desert");
extreme_hills_extension = registerWrappedBiome(new BiomeExtExtremeHills(), "extreme_hills");
forest_extension = registerWrappedBiome(new BiomeExtForest(), "forest");
ice_plains_extension = registerWrappedBiome(new BiomeExtIcePlains(), "ice_plains");
jungle_extension = registerWrappedBiome(new BiomeExtJungle(), "jungle");
mesa_extension = registerWrappedBiome(new BiomeExtMesa(), "mesa");
plains_extension = registerWrappedBiome(new BiomeExtPlains(), "plains");
roofed_forest_extension = registerWrappedBiome(new BiomeExtRoofedForest(), "roofed_forest");
savanna_extension = registerWrappedBiome(new BiomeExtSavanna(), "savanna");
swampland_extension = registerWrappedBiome(new BiomeExtSwampland(), "swampland");
taiga_extension = registerWrappedBiome(new BiomeExtTaiga(), "taiga");
}
private static void registerBiomeDictionaryTags()
@ -451,7 +466,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry
registerBiomeToDictionary(BOPBiomes.mountain, Type.MOUNTAIN, Type.FOREST, Type.DRY);
registerBiomeToDictionary(BOPBiomes.mystic_grove, Type.MAGICAL, Type.FOREST, Type.LUSH);
registerBiomeToDictionary(BOPBiomes.ominous_woods, Type.MAGICAL, Type.FOREST, Type.SPOOKY, Type.DEAD);
registerBiomeToDictionary(BOPBiomes.origin_valley, Type.MAGICAL, Type.SPARSE);
//registerBiomeToDictionary(BOPBiomes.origin_valley, Type.FOREST, Type.PLAINS, Type.LUSH);
registerBiomeToDictionary(BOPBiomes.outback, Type.SANDY, Type.PLAINS, Type.SAVANNA, Type.DRY, Type.HOT);
registerBiomeToDictionary(BOPBiomes.overgrown_cliffs, Type.MOUNTAIN, Type.LUSH, Type.DENSE, Type.JUNGLE);
registerBiomeToDictionary(BOPBiomes.prairie, Type.PLAINS, Type.DRY, Type.SPARSE);
@ -475,9 +490,11 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry
// edge-biomes, sub-biomes and mutated-biomes
registerBiomeToDictionary(BOPBiomes.mountain_foothills, Type.HILLS, Type.MOUNTAIN);
registerBiomeToDictionary(BOPBiomes.canyon_ravine, Type.SANDY, Type.HILLS, Type.DRY, Type.HOT);
registerBiomeToDictionary(BOPBiomes.oasis, Type.DESERT, Type.LUSH, Type.JUNGLE, Type.HOT);
registerBiomeToDictionary(BOPBiomes.coral_reef, Type.WATER, Type.OCEAN);
registerBiomeToDictionary(BOPBiomes.kelp_forest, Type.WATER, Type.OCEAN);
registerBiomeToDictionary(BOPBiomes.tropical_island, Type.WATER, Type.OCEAN, Type.JUNGLE, Type.LUSH);
registerBiomeToDictionary(BOPBiomes.volcanic_island, Type.WATER, Type.OCEAN, Type.DEAD, Type.WASTELAND, Type.MOUNTAIN, Type.HOT);
registerBiomeToDictionary(BOPBiomes.gravel_beach, Type.BEACH);
}

View file

@ -62,71 +62,53 @@ public class ModBlocks
public static void init()
{
ash_block = registerBlock( new BlockBOPAsh(), "ash_block" );
bamboo = registerBlock( new BlockBOPBamboo(), "bamboo" );
bone_segment = registerBlock( new BlockBOPBones(), "bone_segment" );
coral = registerBlock( new BlockBOPCoral(), "coral" );
seaweed = registerBlock( new BlockBOPSeaweed(), "seaweed" );
gem_block = registerBlock( new BlockBOPGem(), "gem_block" );
gem_ore = registerBlock( new BlockBOPGemOre(), "gem_ore" );
hive = registerBlock( new BlockBOPHive(), "hive" );
mushroom = registerBlock( new BlockBOPMushroom(), "mushroom" );
stone = registerBlock( new BlockBOPStone(), "stone" );
mud = registerBlock( new BlockBOPMud(), "mud" );
sand = registerBlock( new BlockBOPSand(), "sand" );
turnip_block = registerBlock( new BlockBOPTurnip(), "turnip_block", null ); // no creative tab
flesh = registerBlock( new BlockBOPFlesh(), "flesh" );
//Terrain Blocks
grass = registerBlock( new BlockBOPGrass(), "grass" );
waterlily = registerBlock( new BlockBOPLilypad(), "waterlily" );
dirt = registerBlock( new BlockBOPDirt(), "dirt" );
crystal = registerBlock( new BlockBOPCrystal(), "crystal" );
biome_block = registerBlock( new BlockBOPBiomeBlock(), "biome_block" );
// generics
bamboo_thatching = registerBlock( (new BlockBOPGeneric(Material.wood)).setStepSound(Block.soundTypeWood).setHardness(2.0F), "bamboo_thatching"); bamboo_thatching.setHarvestLevel("axe", 0);
BlockBOPFarmland.createAllPages();
farmland_0 = registerBlock( BlockBOPFarmland.paging.getBlock(0), "farmland_0", null);
farmland_1 = registerBlock( BlockBOPFarmland.paging.getBlock(1), "farmland_1", null);
stone = registerBlock( new BlockBOPStone(), "stone" );
crag_rock = registerBlock( (new BlockBOPGeneric()).setStepSound(Block.soundTypeStone), "crag_rock" );
dried_sand = registerBlock( (new BlockBOPGeneric()).addSupportedPlantType(EnumPlantType.Desert), "dried_sand"); dried_sand.setHarvestLevel("pickaxe",0);
hard_ice = registerBlock( (new BlockBOPGeneric(Material.packedIce)).setHardness(0.75F), "hard_ice" );
mud_brick_block = registerBlock( (new BlockBOPGeneric()).setResistance(2.0F), "mud_brick_block" );
ash_block = registerBlock( new BlockBOPAsh(), "ash_block" );
mud = registerBlock( new BlockBOPMud(), "mud" );
sand = registerBlock( new BlockBOPSand(), "sand" );
flesh = registerBlock( new BlockBOPFlesh(), "flesh" );
//Building Blocks
crystal = registerBlock( new BlockBOPCrystal(), "crystal" );
biome_block = registerBlock( new BlockBOPBiomeBlock(), "biome_block" );
gem_ore = registerBlock( new BlockBOPGemOre(), "gem_ore" );
gem_block = registerBlock( new BlockBOPGem(), "gem_block" );
hive = registerBlock( new BlockBOPHive(), "hive" );
honey_block = registerBlock( new BlockBOPHoney(), "honey_block" );
bone_segment = registerBlock( new BlockBOPBones(), "bone_segment" );
//Material Blocks
bamboo_thatching = registerBlock( (new BlockBOPGeneric(Material.wood)).setStepSound(Block.soundTypeWood).setHardness(2.0F), "bamboo_thatching"); bamboo_thatching.setHarvestLevel("axe", 0);
mud_brick_block = registerBlock( (new BlockBOPGeneric()).setResistance(2.0F), "mud_brick_block" );
mud_brick_stairs = registerBlock( BOPReflectionHelper.construct(BlockStairs.class, (IBlockState)mud_brick_block.getDefaultState()), "mud_brick_stairs");
// stone and brick slabs
//Stone Slabs
// need to register items at the same time really so that they can be mapped to each other - bit messy this
other_slab = registerBlock( new BlockBOPHalfOtherSlab(), "other_slab");
double_other_slab = registerBlock( new BlockBOPDoubleOtherSlab(), "double_other_slab", null ); // no creative tab for double slab
BOPItems.other_slab = ModItems.registerItem( new ItemSlab(other_slab, (BlockSlab)other_slab, (BlockSlab)double_other_slab), "other_slab");
// 22 flower types 16 per BlockBOPFlower instance, needs 2 'pages'
BlockBOPFlower.createAllPages();
flower_0 = registerBlock( BlockBOPFlower.paging.getBlock(0), "flower_0" );
flower_1 = registerBlock( BlockBOPFlower.paging.getBlock(1), "flower_1" );
// Logs
// 16 wood types, 4 per BlockBOPLog instance, needs 4 'pages'
BlockBOPLog.createAllPages();
log_0 = registerBlock( BlockBOPLog.paging.getBlock(0), "log_0" );
log_1 = registerBlock( BlockBOPLog.paging.getBlock(1), "log_1" );
log_2 = registerBlock( BlockBOPLog.paging.getBlock(2), "log_2" );
log_3 = registerBlock( BlockBOPLog.paging.getBlock(3), "log_3" );
log_4 = registerBlock( BlockBOPLog.paging.getBlock(4), "log_4" );
// TODO: check if hellbark planks, fence etc can burn
// 16 wood types, 8 per BlockBOPHalfWoodSlab and BlockBOPDoubleWoodSlab intance, needs 2 'pages'
// need to register items at the same time really so that they can be mapped to each other - bit messy this
BlockBOPDoubleWoodSlab.createAllPages();
BlockBOPHalfWoodSlab.createAllPages();
wood_slab_0 = registerBlock( BlockBOPHalfWoodSlab.paging.getBlock(0), "wood_slab_0");
double_wood_slab_0 = registerBlock( BlockBOPDoubleWoodSlab.paging.getBlock(0), "double_wood_slab_0", null ); // no creative tab for double slab
BOPItems.wood_slab_0 = ModItems.registerItem( new ItemSlab(wood_slab_0, (BlockSlab)wood_slab_0, (BlockSlab)double_wood_slab_0), "wood_slab_0");
wood_slab_1 = registerBlock( BlockBOPHalfWoodSlab.paging.getBlock(1), "wood_slab_1");
double_wood_slab_1 = registerBlock( BlockBOPDoubleWoodSlab.paging.getBlock(1), "double_wood_slab_1", null ); // no creative tab for double slab
BOPItems.wood_slab_1 = ModItems.registerItem( new ItemSlab(wood_slab_1, (BlockSlab)wood_slab_1, (BlockSlab)double_wood_slab_1), "wood_slab_1");
// 16 wood types, 16 per BlockBOPPlanks instance, needs 1 'pages'
BlockBOPPlanks.createAllPages();
planks_0 = registerBlock( BlockBOPPlanks.paging.getBlock(0), "planks_0");
//Leaves
// 22 tree types, 4 per BlockBOPLeaves instance, needs 6 'pages'
BlockBOPLeaves.createAllPages();
leaves_0 = registerBlock( BlockBOPLeaves.paging.getBlock(0), "leaves_0");
@ -135,16 +117,11 @@ public class ModBlocks
leaves_3 = registerBlock( BlockBOPLeaves.paging.getBlock(3), "leaves_3" );
leaves_4 = registerBlock( BlockBOPLeaves.paging.getBlock(4), "leaves_4" );
leaves_5 = registerBlock( BlockBOPLeaves.paging.getBlock(5), "leaves_5" );
BlockBOPFarmland.createAllPages();
farmland_0 = registerBlock( BlockBOPFarmland.paging.getBlock(0), "farmland_0", null);
farmland_1 = registerBlock( BlockBOPFarmland.paging.getBlock(1), "farmland_1", null);
// 22 tree types, 8 per BlockBOPSapling instance, needs 3 'pages'
BlockBOPSapling.createAllPages();
sapling_0 = registerBlock( BlockBOPSapling.paging.getBlock(0), "sapling_0");
sapling_1 = registerBlock( BlockBOPSapling.paging.getBlock(1), "sapling_1");
sapling_2 = registerBlock( BlockBOPSapling.paging.getBlock(2), "sapling_2");
leaves_6 = registerBlock( BlockBOPLeaves.paging.getBlock(6), "leaves_6" );
// 16 wood types, 16 per BlockBOPPlanks instance, needs 1 'pages'
BlockBOPPlanks.createAllPages();
planks_0 = registerBlock( BlockBOPPlanks.paging.getBlock(0), "planks_0");
// stairs have no variant metadata, use a new BlockBOPStairs instance for each (note there's no giant_flower_stairs or dead_stairs)
sacred_oak_stairs = registerBlock( new BlockBOPWoodStairs(BOPWoods.SACRED_OAK), "sacred_oak_stairs" );
@ -161,6 +138,20 @@ public class ModBlocks
hellbark_stairs = registerBlock( new BlockBOPWoodStairs(BOPWoods.HELLBARK), "hellbark_stairs" );
jacaranda_stairs = registerBlock( new BlockBOPWoodStairs(BOPWoods.JACARANDA), "jacaranda_stairs" );
mahogany_stairs = registerBlock( new BlockBOPWoodStairs(BOPWoods.MAHOGANY), "mahogany_stairs" );
ebony_stairs = registerBlock( new BlockBOPWoodStairs(BOPWoods.EBONY), "ebony_stairs" );
eucalyptus_stairs = registerBlock( new BlockBOPWoodStairs(BOPWoods.EUCALYPTUS), "eucalyptus_stairs" );
// 16 wood types, 8 per BlockBOPHalfWoodSlab and BlockBOPDoubleWoodSlab intance, needs 2 'pages'
// need to register items at the same time really so that they can be mapped to each other - bit messy this
BlockBOPDoubleWoodSlab.createAllPages();
BlockBOPHalfWoodSlab.createAllPages();
wood_slab_0 = registerBlock( BlockBOPHalfWoodSlab.paging.getBlock(0), "wood_slab_0");
double_wood_slab_0 = registerBlock( BlockBOPDoubleWoodSlab.paging.getBlock(0), "double_wood_slab_0", null ); // no creative tab for double slab
BOPItems.wood_slab_0 = ModItems.registerItem( new ItemSlab(wood_slab_0, (BlockSlab)wood_slab_0, (BlockSlab)double_wood_slab_0), "wood_slab_0");
wood_slab_1 = registerBlock( BlockBOPHalfWoodSlab.paging.getBlock(1), "wood_slab_1");
double_wood_slab_1 = registerBlock( BlockBOPDoubleWoodSlab.paging.getBlock(1), "double_wood_slab_1", null ); // no creative tab for double slab
BOPItems.wood_slab_1 = ModItems.registerItem( new ItemSlab(wood_slab_1, (BlockSlab)wood_slab_1, (BlockSlab)double_wood_slab_1), "wood_slab_1");
// fences have no variant metadata, use a new BlockBOPFence instance for each (note there's no giant_flower_fence or dead_fence)
sacred_oak_fence = registerBlock( new BlockBOPFence(BOPWoods.SACRED_OAK), "sacred_oak_fence" );
@ -177,6 +168,8 @@ public class ModBlocks
hellbark_fence = registerBlock( new BlockBOPFence(BOPWoods.HELLBARK), "hellbark_fence" );
jacaranda_fence = registerBlock( new BlockBOPFence(BOPWoods.JACARANDA), "jacaranda_fence" );
mahogany_fence = registerBlock( new BlockBOPFence(BOPWoods.MAHOGANY), "mahogany_fence" );
ebony_fence = registerBlock( new BlockBOPFence(BOPWoods.EBONY), "ebony_fence" );
eucalyptus_fence = registerBlock( new BlockBOPFence(BOPWoods.EUCALYPTUS), "eucalyptus_fence" );
// fence gates have no variant metadata, use a new BlockBOPFenceGate instance for each (note there's no giant_flower_fence_gate or dead_fence_gate)
sacred_oak_fence_gate = registerBlock( new BlockBOPFenceGate(BOPWoods.SACRED_OAK), "sacred_oak_fence_gate" );
@ -193,6 +186,8 @@ public class ModBlocks
hellbark_fence_gate = registerBlock( new BlockBOPFenceGate(BOPWoods.HELLBARK), "hellbark_fence_gate" );
jacaranda_fence_gate = registerBlock( new BlockBOPFenceGate(BOPWoods.JACARANDA), "jacaranda_fence_gate" );
mahogany_fence_gate = registerBlock( new BlockBOPFenceGate(BOPWoods.MAHOGANY), "mahogany_fence_gate" );
ebony_fence_gate = registerBlock( new BlockBOPFenceGate(BOPWoods.EBONY), "ebony_fence_gate" );
eucalyptus_fence_gate = registerBlock( new BlockBOPFenceGate(BOPWoods.EUCALYPTUS), "eucalyptus_fence_gate" );
// doors have no variant metadata, use a new BlockBOPDoor instance for each (note there's no giant_flower_door or dead_door)
sacred_oak_door = registerDoor( new BlockBOPDoor(BOPWoods.SACRED_OAK), "sacred_oak_door", BOPItems.sacred_oak_door );
@ -209,21 +204,42 @@ public class ModBlocks
hellbark_door = registerDoor( new BlockBOPDoor(BOPWoods.HELLBARK), "hellbark_door", BOPItems.hellbark_door );
jacaranda_door = registerDoor( new BlockBOPDoor(BOPWoods.JACARANDA), "jacaranda_door", BOPItems.jacaranda_door );
mahogany_door = registerDoor( new BlockBOPDoor(BOPWoods.MAHOGANY), "mahogany_door", BOPItems.mahogany_door );
ebony_door = registerDoor( new BlockBOPDoor(BOPWoods.EBONY), "ebony_door", BOPItems.ebony_door );
eucalyptus_door = registerDoor( new BlockBOPDoor(BOPWoods.EUCALYPTUS), "eucalyptus_door", BOPItems.eucalyptus_door );
// Plants
coral = registerBlock( new BlockBOPCoral(), "coral" );
seaweed = registerBlock( new BlockBOPSeaweed(), "seaweed" );
waterlily = registerBlock( new BlockBOPLilypad(), "waterlily" );
moss = registerBlock( new BlockBOPVine(true), "moss" );
bamboo = registerBlock( new BlockBOPBamboo(), "bamboo" );
turnip_block = registerBlock( new BlockBOPTurnip(), "turnip_block", null ); // no creative tab
// 22 tree types, 8 per BlockBOPSapling instance, needs 3 'pages'
BlockBOPSapling.createAllPages();
sapling_0 = registerBlock( BlockBOPSapling.paging.getBlock(0), "sapling_0");
sapling_1 = registerBlock( BlockBOPSapling.paging.getBlock(1), "sapling_1");
sapling_2 = registerBlock( BlockBOPSapling.paging.getBlock(2), "sapling_2");
//Plants
BlockBOPPlant.createAllPages();
plant_0 = registerBlock( BlockBOPPlant.paging.getBlock(0), "plant_0" );
plant_1 = registerBlock( BlockBOPPlant.paging.getBlock(1), "plant_1" );
double_plant = registerBlock( new BlockBOPDoublePlant(), "double_plant" );
mushroom = registerBlock( new BlockBOPMushroom(), "mushroom" );
// 22 flower types 16 per BlockBOPFlower instance, needs 2 'pages'
BlockBOPFlower.createAllPages();
flower_0 = registerBlock( BlockBOPFlower.paging.getBlock(0), "flower_0" );
flower_1 = registerBlock( BlockBOPFlower.paging.getBlock(1), "flower_1" );
//vines
// TODO: special placement rules?
flower_vine = registerBlock( new BlockBOPVine(false), "flower_vine" );
ivy = registerBlock( new BlockBOPVine(true), "ivy" );
moss = registerBlock( new BlockBOPVine(true), "moss" );
tree_moss = registerBlock( new BlockBOPVine(false), "tree_moss" );
BlockBOPPlant.createAllPages();
plant_0 = registerBlock( BlockBOPPlant.paging.getBlock(0), "plant_0" );
plant_1 = registerBlock( BlockBOPPlant.paging.getBlock(1), "plant_1" );
double_plant = registerBlock( new BlockBOPDoublePlant(), "double_plant" );
honey_block = registerBlock( new BlockBOPHoney(), "honey_block" );
terrarium = registerBlock( new BlockBOPTerrarium(), "terrarium" );

View file

@ -19,6 +19,7 @@ import net.minecraftforge.oredict.ShapelessOreRecipe;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.block.BlockBOPBones;
import biomesoplenty.common.block.BlockBOPDirt;
import biomesoplenty.common.block.BlockBOPDoor;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPFence;
@ -34,6 +35,7 @@ import biomesoplenty.common.block.BlockBOPLog;
import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.block.BlockBOPPlanks;
import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.block.BlockBOPSand;
import biomesoplenty.common.block.BlockBOPSapling;
import biomesoplenty.common.block.BlockBOPSeaweed;
import biomesoplenty.common.block.BlockBOPTerrarium;
@ -239,6 +241,16 @@ public class ModCrafting
// Mossy Stone Brick
GameRegistry.addShapedRecipe(new ItemStack(Blocks.stonebrick, 1, 1), new Object[] {"MMM", "MSM", "MMM", 'M', BOPBlocks.moss, 'S', Blocks.stonebrick});
//Coarse Dirts
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.dirt, 4, BOPBlocks.dirt.getMetaFromState(BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.LOAMY).withProperty(BlockBOPDirt.COARSE, true))), new Object[] {"GD", "DG", 'G', Blocks.gravel, 'D', new ItemStack(BOPBlocks.dirt, 4, BlockBOPDirt.BOPDirtType.LOAMY.ordinal())});
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.dirt, 4, BOPBlocks.dirt.getMetaFromState(BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.LOAMY).withProperty(BlockBOPDirt.COARSE, true))), new Object[] {"DG", "GD", 'G', Blocks.gravel, 'D', new ItemStack(BOPBlocks.dirt, 4, BlockBOPDirt.BOPDirtType.LOAMY.ordinal())});
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.dirt, 4, BOPBlocks.dirt.getMetaFromState(BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.SANDY).withProperty(BlockBOPDirt.COARSE, true))), new Object[] {"GD", "DG", 'G', Blocks.gravel, 'D', new ItemStack(BOPBlocks.dirt, 4, BlockBOPDirt.BOPDirtType.SANDY.ordinal())});
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.dirt, 4, BOPBlocks.dirt.getMetaFromState(BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.SANDY).withProperty(BlockBOPDirt.COARSE, true))), new Object[] {"DG", "GD", 'G', Blocks.gravel, 'D', new ItemStack(BOPBlocks.dirt, 4, BlockBOPDirt.BOPDirtType.SANDY.ordinal())});
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.dirt, 4, BOPBlocks.dirt.getMetaFromState(BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.SILTY).withProperty(BlockBOPDirt.COARSE, true))), new Object[] {"GD", "DG", 'G', Blocks.gravel, 'D', new ItemStack(BOPBlocks.dirt, 4, BlockBOPDirt.BOPDirtType.SILTY.ordinal())});
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.dirt, 4, BOPBlocks.dirt.getMetaFromState(BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.SILTY).withProperty(BlockBOPDirt.COARSE, true))), new Object[] {"DG", "GD", 'G', Blocks.gravel, 'D', new ItemStack(BOPBlocks.dirt, 4, BlockBOPDirt.BOPDirtType.SILTY.ordinal())});
// Enderporter
GameRegistry.addShapedRecipe(new ItemStack(BOPItems.enderporter), new Object[] {"IOI", "OAO", "IOI", 'I', Items.ender_eye, 'O', new ItemStack(BOPItems.soul), 'A', new ItemStack(BOPItems.gem, 1, BOPGems.AMETHYST.ordinal())});
@ -308,6 +320,7 @@ public class ModCrafting
{
// Register smelting recipes
GameRegistry.addSmelting(new ItemStack(BOPBlocks.sand, 1, BlockBOPSand.SandType.QUICKSAND.ordinal()), new ItemStack(Blocks.sand), 0F);
GameRegistry.addSmelting(new ItemStack(BOPBlocks.mud), new ItemStack(Blocks.dirt), 0F);
GameRegistry.addSmelting(BlockBOPPlant.paging.getVariantItem(BOPPlants.TINYCACTUS), new ItemStack(Items.dye, 1, EnumDyeColor.GREEN.getDyeDamage()), 0.2F);
GameRegistry.addSmelting(BOPItems.mudball, new ItemStack(BOPItems.mud_brick), 0F);
@ -352,6 +365,8 @@ public class ModCrafting
OreDictionary.registerOre("blockGrass", new ItemStack(BOPBlocks.grass, 1, BlockBOPGrass.BOPGrassType.ORIGIN.ordinal()));
OreDictionary.registerOre("blockGrass", new ItemStack(Blocks.grass));
OreDictionary.registerOre("blockDirt", new ItemStack(Blocks.dirt));
OreDictionary.registerOre("foodMushroompowder", new ItemStack(BOPItems.shroompowder));
OreDictionary.registerOre("foodFruitsalad", new ItemStack(BOPItems.saladfruit));
OreDictionary.registerOre("foodVeggiesalad", new ItemStack(BOPItems.saladveggie));

View file

@ -45,16 +45,12 @@ public class ModItems
public static void registerItems()
{
// food
ambrosia = registerItem(new ItemAmbrosia(), "ambrosia");
berries = registerItem(new ItemBOPFood(1, 0.1F, 8), "berries");
shroompowder = registerItem(new ItemFood(1, 0.1F, false), "shroompowder");
((ItemFood)shroompowder).setAlwaysEdible();
((ItemFood)shroompowder).setPotionEffect(Potion.confusion.id, 225, 0, 0.6F);
peach = registerItem(new ItemFood(5, 0.2F, false), "peach");
berries = registerItem(new ItemBOPFood(1, 0.1F, 8), "berries");
pear = registerItem(new ItemFood(5, 0.3F, false), "pear");
peach = registerItem(new ItemFood(5, 0.2F, false), "peach");
persimmon = registerItem(new ItemFood(5, 0.2F, false), "persimmon");
filled_honeycomb = registerItem(new ItemBOPFood(3, 0.4F, 16), "filled_honeycomb");
turnip_seeds = registerItem(new ItemSeeds(BOPBlocks.turnip_block, Blocks.farmland), "turnip_seeds");
turnip = registerItem(new ItemFood(3, 0.4F, false), "turnip");
pear = registerItem(new ItemFood(5, 0.3F, false), "pear");
saladfruit = registerItem(new ItemSoup(6), "saladfruit");
((ItemFood)saladfruit).setPotionEffect(Potion.digSpeed.id, 775, 1, 0.05F);
saladveggie = registerItem(new ItemSoup(6), "saladveggie");
@ -62,35 +58,36 @@ public class ModItems
saladshroom = registerItem(new ItemSoup(6), "saladshroom");
((ItemFood)saladshroom).setPotionEffect(Potion.jump.id, 550, 1, 0.05F);
ricebowl = registerItem(new ItemSoup(2), "ricebowl");
honeycomb = registerItem(new Item(), "honeycomb");
filled_honeycomb = registerItem(new ItemBOPFood(3, 0.4F, 16), "filled_honeycomb");
pinecone = registerItem(new Item(), "pinecone");
shroompowder = registerItem(new ItemFood(1, 0.1F, false), "shroompowder");
((ItemFood)shroompowder).setAlwaysEdible();
((ItemFood)shroompowder).setPotionEffect(Potion.confusion.id, 225, 0, 0.6F);
ambrosia = registerItem(new ItemAmbrosia(), "ambrosia");
earth = registerItem(new Item(), "earth");
earth.setCreativeTab(null);
fleshchunk = registerItem(new Item(), "fleshchunk");
flax_string = registerItem(new Item(), "flax_string");
mudball = registerItem(new ItemMudball(), "mudball");
turnip_seeds = registerItem(new ItemSeeds(BOPBlocks.turnip_block, Blocks.farmland), "turnip_seeds");
crystal_shard = registerItem(new Item(), "crystal_shard");
mud_brick = registerItem(new Item(), "mud_brick");
ash = registerItem(new Item(), "ash");
fleshchunk = registerItem(new Item(), "fleshchunk");
gem = registerItem(new ItemGem(), "gem");
terrestrial_artifact = registerItem(new Item(), "terrestrial_artifact");
terrestrial_artifact.setMaxStackSize(1);
flax_string = registerItem(new Item(), "flax_string");
honeycomb = registerItem(new Item(), "honeycomb");
gem = registerItem(new ItemGem(), "gem");
ash = registerItem(new Item(), "ash");
mud_brick = registerItem(new Item(), "mud_brick");
crystal_shard = registerItem(new Item(), "crystal_shard");
biome_essence = registerItem(new ItemBiomeEssence(), "biome_essence");
pixie_dust = registerItem(new Item(), "pixie_dust");
ichor = registerItem(new Item(), "ichor");
soul = registerItem(new Item(), "soul");
soul.setMaxStackSize(1);
// TODO: move dyes to their own class?
blue_dye = registerItem(new Item(), "blue_dye");
brown_dye = registerItem(new Item(), "brown_dye");
green_dye = registerItem(new Item(), "green_dye");
white_dye = registerItem(new Item(), "white_dye");
black_dye = registerItem(new Item(), "black_dye");
soul = registerItem(new Item(), "soul");
soul.setMaxStackSize(1);
pixie_dust = registerItem(new Item(), "pixie_dust");
ichor = registerItem(new Item(), "ichor");
pinecone = registerItem(new Item(), "pinecone");
dart = registerItem(new ItemDart(), "dart");
dart_blower = registerItem(new ItemDartBlower(), "dart_blower");
// armor
@ -130,8 +127,6 @@ public class ModItems
amethyst_chestplate = registerItem(new ItemArmor(amethyst_armor_material, 0, 1), "amethyst_chestplate");
amethyst_leggings = registerItem(new ItemArmor(amethyst_armor_material, 0, 2), "amethyst_leggings");
amethyst_boots = registerItem(new ItemArmor(amethyst_armor_material, 0, 3), "amethyst_boots");
// tools
@ -162,7 +157,6 @@ public class ModItems
amethyst_shovel = registerItem(new ItemSpade(amethyst_tool_material), "amethyst_shovel");
amethyst_sword = registerItem(new ItemSword(amethyst_tool_material), "amethyst_sword");
mud_scythe = registerItem(new ItemBOPScythe(mud_tool_material), "mud_scythe");
wood_scythe = registerItem(new ItemBOPScythe(ToolMaterial.WOOD), "wood_scythe");
stone_scythe = registerItem(new ItemBOPScythe(ToolMaterial.STONE), "stone_scythe");
@ -170,14 +164,15 @@ public class ModItems
gold_scythe = registerItem(new ItemBOPScythe(ToolMaterial.GOLD), "gold_scythe");
diamond_scythe = registerItem(new ItemBOPScythe(ToolMaterial.EMERALD), "diamond_scythe");
amethyst_scythe = registerItem(new ItemBOPScythe(amethyst_tool_material), "amethyst_scythe");
biome_finder = registerItem(new ItemBiomeFinder(), "biome_finder");
biome_essence = registerItem(new ItemBiomeEssence(), "biome_essence");
enderporter = registerItem(new ItemEnderporter(), "enderporter");
flower_basket = registerItem(new ItemFlowerBasket(), "flower_basket");
dart = registerItem(new ItemDart(), "dart");
dart_blower = registerItem(new ItemDartBlower(), "dart_blower");
jar_empty = registerItem(new ItemJarEmpty(), "jar_empty");
jar_filled = registerItem(new ItemJarFilled(), "jar_filled");
flower_basket = registerItem(new ItemFlowerBasket(), "flower_basket");
biome_finder = registerItem(new ItemBiomeFinder(), "biome_finder");
enderporter = registerItem(new ItemEnderporter(), "enderporter");
record_wanderer = registerItem(new ItemBOPRecord("wanderer"), "record_wanderer");
record_corruption = registerItem(new ItemBOPRecord("corruption"), "record_corruption");

View file

@ -24,6 +24,7 @@ import biomesoplenty.common.world.layer.GenLayerRaggedEdges;
import biomesoplenty.common.world.layer.GenLayerRainfallNoise;
import biomesoplenty.common.world.layer.GenLayerRainfallRandom;
import biomesoplenty.common.world.layer.GenLayerRiverMixBOP;
import biomesoplenty.common.world.layer.GenLayerShoreBOP;
import biomesoplenty.common.world.layer.GenLayerSubBiomesBOP;
import biomesoplenty.common.world.layer.GenLayerTemperatureLatitude;
import biomesoplenty.common.world.layer.GenLayerTemperatureNoise;
@ -258,7 +259,7 @@ public class WorldChunkManagerBOP extends WorldChunkManager
{
mainBranch = new GenLayerZoom((long)(1000 + i), mainBranch);
if (i == 0) {mainBranch = new GenLayerRaggedEdges(3L, mainBranch);}
if (i == 1 || biomeSize == 1) {mainBranch = new GenLayerShore(1000L, mainBranch);}
if (i == 1 || biomeSize == 1) {mainBranch = new GenLayerShoreBOP(1000L, mainBranch);}
}
mainBranch = new GenLayerSmooth(1000L, mainBranch);

View file

@ -0,0 +1,175 @@
/*******************************************************************************
* Copyright 2016, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.world.layer;
import com.google.common.base.Predicate;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.biome.IExtendedBiome;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.biome.BiomeGenJungle;
import net.minecraft.world.biome.BiomeGenMesa;
import net.minecraft.world.gen.layer.GenLayer;
import net.minecraft.world.gen.layer.IntCache;
public class GenLayerShoreBOP extends BOPGenLayer
{
public GenLayerShoreBOP(long seed, GenLayer parent)
{
super(seed);
this.parent = parent;
}
@Override
public int[] getInts(int areaX, int areaY, int areaWidth, int areaHeight)
{
int[] biomeIds = this.parent.getInts(areaX - 1, areaY - 1, areaWidth + 2, areaHeight + 2);
int[] out = IntCache.getIntCache(areaWidth * areaHeight);
for (int z = 0; z < areaHeight; ++z)
{
for (int x = 0; x < areaWidth; ++x)
{
this.initChunkSeed((long)(x + areaX), (long)(z + areaY));
//The biome we're going to attempt to put a beach beside
int biomeId = biomeIds[x + 1 + (z + 1) * (areaWidth + 2)];
BiomeGenBase biome = BiomeGenBase.getBiome(biomeId);
if (biomeId == BiomeGenBase.mushroomIsland.biomeID)
{
setBiomeWithAdjacent(biomeIds, out, x, z, areaWidth, biomeId, BiomeGenBase.mushroomIslandShore.biomeID, OCEAN_PREDICATE);
}
else if (biome != null && biome.getBiomeClass() == BiomeGenJungle.class)
{
int biomeNorth = biomeIds[x + 1 + (z + 1 - 1) * (areaWidth + 2)];
int biomeEast = biomeIds[x + 1 + 1 + (z + 1) * (areaWidth + 2)];
int biomeWest = biomeIds[x + 1 - 1 + (z + 1) * (areaWidth + 2)];
int biomeSouth = biomeIds[x + 1 + (z + 1 + 1) * (areaWidth + 2)];
//Ensure the biomes surrounding the jungle are all suitable before generating a beach
if (JUNGLE_BORDER_PREDICATE.apply(biomeNorth) && JUNGLE_BORDER_PREDICATE.apply(biomeEast) && JUNGLE_BORDER_PREDICATE.apply(biomeWest) && JUNGLE_BORDER_PREDICATE.apply(biomeSouth))
{
setBiomeWithAdjacent(biomeIds, out, x, z, areaWidth, biomeId, BiomeGenBase.beach.biomeID, OCEANIC_PREDICATE);
}
else //There is a non-jungle/ocean/taiga/forest next to the jungle, generate an edge biome
{
out[x + z * areaWidth] = BiomeGenBase.jungleEdge.biomeID;
}
}
else if (biomeId != BiomeGenBase.extremeHills.biomeID && biomeId != BiomeGenBase.extremeHillsPlus.biomeID && biomeId != BiomeGenBase.extremeHillsEdge.biomeID)
{
if (biome != null && biome.isSnowyBiome()) //Snowy biomes should have cold beaches
{
//Frozen ocean should not have a beach
if (isBiomeOceanic(biomeId)) out[x + z * areaWidth] = biomeId;
else
setBiomeWithAdjacent(biomeIds, out, x, z, areaWidth, biomeId, BiomeGenBase.coldBeach.biomeID, OCEANIC_PREDICATE);
}
else if (biomeId != BiomeGenBase.mesa.biomeID && biomeId != BiomeGenBase.mesaPlateau_F.biomeID)
{
if (biomeId != BiomeGenBase.ocean.biomeID && biomeId != BiomeGenBase.deepOcean.biomeID && biomeId != BiomeGenBase.river.biomeID && biomeId != BiomeGenBase.swampland.biomeID)
{
//Generate custom beaches for our biomes
if (biome != null && BOPBiomes.REG_INSTANCE.getExtendedBiome(biome) != null)
{
IExtendedBiome extBiome = BOPBiomes.REG_INSTANCE.getExtendedBiome(biome);
setBiomeWithAdjacent(biomeIds, out, x, z, areaWidth, biomeId, extBiome.getBeachId() == -1 ? biomeId : extBiome.getBeachId(), OCEANIC_PREDICATE);
}
else
{
setBiomeWithAdjacent(biomeIds, out, x, z, areaWidth, biomeId, BiomeGenBase.beach.biomeID, OCEANIC_PREDICATE);
}
}
else //Biome is watery, don't put any beaches next to it
{
out[x + z * areaWidth] = biomeId;
}
}
else //Biome is a variant of the mesa
{
int biomeNorth = biomeIds[x + 1 + (z + 1 - 1) * (areaWidth + 2)];
int biomeEast = biomeIds[x + 1 + 1 + (z + 1) * (areaWidth + 2)];
int biomeWest = biomeIds[x + 1 - 1 + (z + 1) * (areaWidth + 2)];
int biomeSouth = biomeIds[x + 1 + (z + 1 + 1) * (areaWidth + 2)];
//Ensure that none of the surrounding biomes are ocean
if (!isBiomeOceanic(biomeNorth) && !isBiomeOceanic(biomeEast) && !isBiomeOceanic(biomeWest) && !isBiomeOceanic(biomeSouth))
{
//If at least one of the surrounding biomes is a non-mesa, set it to desert
setBiomeWithAdjacent(biomeIds, out, x, z, areaWidth, biomeId, BiomeGenBase.desert.biomeID, MESA_PREDICATE);
}
else
{
out[x + z * areaWidth] = biomeId;
}
}
}
else //Biome is a variant of the extreme hills
{
this.setBiomeWithAdjacent(biomeIds, out, x, z, areaWidth, biomeId, BiomeGenBase.stoneBeach.biomeID, OCEANIC_PREDICATE);
}
}
}
return out;
}
private void setBiomeWithAdjacent(int[] biomeIds, int[] out, int x, int z, int areaWidth, int biomeId, int beachId, Predicate<Integer> adjacentPredicate)
{
int biomeNorth = biomeIds[x + 1 + (z + 1 - 1) * (areaWidth + 2)];
int biomeEast = biomeIds[x + 1 + 1 + (z + 1) * (areaWidth + 2)];
int biomeWest = biomeIds[x + 1 - 1 + (z + 1) * (areaWidth + 2)];
int biomeSouth = biomeIds[x + 1 + (z + 1 + 1) * (areaWidth + 2)];
if (adjacentPredicate.apply(biomeNorth) || adjacentPredicate.apply(biomeEast) || adjacentPredicate.apply(biomeWest) || adjacentPredicate.apply(biomeSouth))
{
out[x + z * areaWidth] = beachId;
}
else
{
out[x + z * areaWidth] = biomeId;
}
}
private static final Predicate<Integer> OCEAN_PREDICATE = new Predicate<Integer>()
{
@Override
public boolean apply(Integer input)
{
return input == BiomeGenBase.ocean.biomeID;
}
};
private static final Predicate<Integer> OCEANIC_PREDICATE = new Predicate<Integer>()
{
@Override
public boolean apply(Integer input)
{
return isBiomeOceanic(input);
}
};
private static final Predicate<Integer> JUNGLE_BORDER_PREDICATE = new Predicate<Integer>()
{
@Override
public boolean apply(Integer input)
{
return BiomeGenBase.getBiome(input) != null && BiomeGenBase.getBiome(input).getBiomeClass() == BiomeGenJungle.class ? true : input == BiomeGenBase.jungleEdge.biomeID || input == BiomeGenBase.jungle.biomeID || input == BiomeGenBase.jungleHills.biomeID || input == BiomeGenBase.forest.biomeID || input == BiomeGenBase.taiga.biomeID || isBiomeOceanic(input);
}
};
private static final Predicate<Integer> MESA_PREDICATE = new Predicate<Integer>()
{
@Override
public boolean apply(Integer input)
{
return !(BiomeGenBase.getBiome(input) instanceof BiomeGenMesa);
}
};
}

View file

@ -5,6 +5,8 @@
"variant=pine": { "model": "biomesoplenty:pine_planks" },
"variant=hellbark": { "model": "biomesoplenty:hellbark_planks" },
"variant=jacaranda": { "model": "biomesoplenty:jacaranda_planks" },
"variant=mahogany": { "model": "biomesoplenty:mahogany_planks" }
"variant=mahogany": { "model": "biomesoplenty:mahogany_planks" },
"variant=ebony": { "model": "biomesoplenty:ebony_planks" },
"variant=eucalyptus": { "model": "biomesoplenty:eucalyptus_planks" }
}
}

View file

@ -0,0 +1,36 @@
{
"variants": {
"facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:ebony_door_bottom" },
"facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:ebony_door_bottom", "y": 90 },
"facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:ebony_door_bottom", "y": 180 },
"facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:ebony_door_bottom", "y": 270 },
"facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:ebony_door_bottom_rh" },
"facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:ebony_door_bottom_rh", "y": 90 },
"facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:ebony_door_bottom_rh", "y": 180 },
"facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:ebony_door_bottom_rh", "y": 270 },
"facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:ebony_door_bottom_rh", "y": 90 },
"facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:ebony_door_bottom_rh", "y": 180 },
"facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:ebony_door_bottom_rh", "y": 270 },
"facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:ebony_door_bottom_rh" },
"facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:ebony_door_bottom", "y": 270 },
"facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:ebony_door_bottom" },
"facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:ebony_door_bottom", "y": 90 },
"facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:ebony_door_bottom", "y": 180 },
"facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:ebony_door_top" },
"facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:ebony_door_top", "y": 90 },
"facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:ebony_door_top", "y": 180 },
"facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:ebony_door_top", "y": 270 },
"facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:ebony_door_top_rh" },
"facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:ebony_door_top_rh", "y": 90 },
"facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:ebony_door_top_rh", "y": 180 },
"facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:ebony_door_top_rh", "y": 270 },
"facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:ebony_door_top_rh", "y": 90 },
"facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:ebony_door_top_rh", "y": 180 },
"facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:ebony_door_top_rh", "y": 270 },
"facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:ebony_door_top_rh" },
"facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:ebony_door_top", "y": 270 },
"facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:ebony_door_top" },
"facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:ebony_door_top", "y": 90 },
"facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:ebony_door_top", "y": 180 }
}
}

View file

@ -0,0 +1,5 @@
{
"variants": {
"normal": { biomesoplenty:ebony_planks" }
}
}

View file

@ -0,0 +1,20 @@
{
"variants": {
"east=false,north=false,south=false,west=false": { "model": "biomesoplenty:ebony_fence_post" },
"east=false,north=true,south=false,west=false": { "model": "biomesoplenty:ebony_fence_n", "uvlock": true },
"east=true,north=false,south=false,west=false": { "model": "biomesoplenty:ebony_fence_n", "y": 90, "uvlock": true },
"east=false,north=false,south=true,west=false": { "model": "biomesoplenty:ebony_fence_n", "y": 180, "uvlock": true },
"east=false,north=false,south=false,west=true": { "model": "biomesoplenty:ebony_fence_n", "y": 270, "uvlock": true },
"east=true,north=true,south=false,west=false": { "model": "biomesoplenty:ebony_fence_ne", "uvlock": true },
"east=true,north=false,south=true,west=false": { "model": "biomesoplenty:ebony_fence_ne", "y": 90, "uvlock": true },
"east=false,north=false,south=true,west=true": { "model": "biomesoplenty:ebony_fence_ne", "y": 180, "uvlock": true },
"east=false,north=true,south=false,west=true": { "model": "biomesoplenty:ebony_fence_ne", "y": 270, "uvlock": true },
"east=false,north=true,south=true,west=false": { "model": "biomesoplenty:ebony_fence_ns", "uvlock": true },
"east=true,north=false,south=false,west=true": { "model": "biomesoplenty:ebony_fence_ns", "y": 90, "uvlock": true },
"east=true,north=true,south=true,west=false": { "model": "biomesoplenty:ebony_fence_nse", "uvlock": true },
"east=true,north=false,south=true,west=true": { "model": "biomesoplenty:ebony_fence_nse", "y": 90, "uvlock": true },
"east=false,north=true,south=true,west=true": { "model": "biomesoplenty:ebony_fence_nse", "y": 180, "uvlock": true },
"east=true,north=true,south=false,west=true": { "model": "biomesoplenty:ebony_fence_nse", "y": 270, "uvlock": true },
"east=true,north=true,south=true,west=true": { "model": "biomesoplenty:ebony_fence_nsew", "uvlock": true }
}
}

View file

@ -0,0 +1,20 @@
{
"variants": {
"facing=south,in_wall=false,open=false": { "model": "biomesoplenty:ebony_fence_gate_closed" },
"facing=west,in_wall=false,open=false": { "model": "biomesoplenty:ebony_fence_gate_closed", "y": 90, "uvlock": true },
"facing=north,in_wall=false,open=false": { "model": "biomesoplenty:ebony_fence_gate_closed", "y": 180, "uvlock": true },
"facing=east,in_wall=false,open=false": { "model": "biomesoplenty:ebony_fence_gate_closed", "y": 270, "uvlock": true },
"facing=south,in_wall=false,open=true": { "model": "biomesoplenty:ebony_fence_gate_open" },
"facing=west,in_wall=false,open=true": { "model": "biomesoplenty:ebony_fence_gate_open", "y": 90, "uvlock": true },
"facing=north,in_wall=false,open=true": { "model": "biomesoplenty:ebony_fence_gate_open", "y": 180, "uvlock": true },
"facing=east,in_wall=false,open=true": { "model": "biomesoplenty:ebony_fence_gate_open", "y": 270, "uvlock": true },
"facing=south,in_wall=true,open=false": { "model": "biomesoplenty:ebony_wall_gate_closed" },
"facing=west,in_wall=true,open=false": { "model": "biomesoplenty:ebony_wall_gate_closed", "y": 90, "uvlock": true },
"facing=north,in_wall=true,open=false": { "model": "biomesoplenty:ebony_wall_gate_closed", "y": 180, "uvlock": true },
"facing=east,in_wall=true,open=false": { "model": "biomesoplenty:ebony_wall_gate_closed", "y": 270, "uvlock": true },
"facing=south,in_wall=true,open=true": { "model": "biomesoplenty:ebony_wall_gate_open" },
"facing=west,in_wall=true,open=true": { "model": "biomesoplenty:ebony_wall_gate_open", "y": 90, "uvlock": true },
"facing=north,in_wall=true,open=true": { "model": "biomesoplenty:ebony_wall_gate_open", "y": 180, "uvlock": true },
"facing=east,in_wall=true,open=true": { "model": "biomesoplenty:ebony_wall_gate_open", "y": 270, "uvlock": true }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"half=bottom": { "model": "biomesoplenty:half_slab_ebony" },
"half=top": { "model": "biomesoplenty:upper_slab_ebony" }
}
}

View file

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

View file

@ -0,0 +1,36 @@
{
"variants": {
"facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:eucalyptus_door_bottom" },
"facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:eucalyptus_door_bottom", "y": 90 },
"facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:eucalyptus_door_bottom", "y": 180 },
"facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:eucalyptus_door_bottom", "y": 270 },
"facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:eucalyptus_door_bottom_rh" },
"facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:eucalyptus_door_bottom_rh", "y": 90 },
"facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:eucalyptus_door_bottom_rh", "y": 180 },
"facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:eucalyptus_door_bottom_rh", "y": 270 },
"facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:eucalyptus_door_bottom_rh", "y": 90 },
"facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:eucalyptus_door_bottom_rh", "y": 180 },
"facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:eucalyptus_door_bottom_rh", "y": 270 },
"facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:eucalyptus_door_bottom_rh" },
"facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:eucalyptus_door_bottom", "y": 270 },
"facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:eucalyptus_door_bottom" },
"facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:eucalyptus_door_bottom", "y": 90 },
"facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:eucalyptus_door_bottom", "y": 180 },
"facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:eucalyptus_door_top" },
"facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:eucalyptus_door_top", "y": 90 },
"facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:eucalyptus_door_top", "y": 180 },
"facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:eucalyptus_door_top", "y": 270 },
"facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:eucalyptus_door_top_rh" },
"facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:eucalyptus_door_top_rh", "y": 90 },
"facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:eucalyptus_door_top_rh", "y": 180 },
"facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:eucalyptus_door_top_rh", "y": 270 },
"facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:eucalyptus_door_top_rh", "y": 90 },
"facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:eucalyptus_door_top_rh", "y": 180 },
"facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:eucalyptus_door_top_rh", "y": 270 },
"facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:eucalyptus_door_top_rh" },
"facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:eucalyptus_door_top", "y": 270 },
"facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:eucalyptus_door_top" },
"facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:eucalyptus_door_top", "y": 90 },
"facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:eucalyptus_door_top", "y": 180 }
}
}

View file

@ -0,0 +1,5 @@
{
"variants": {
"normal": { biomesoplenty:eucalyptus_planks" }
}
}

View file

@ -0,0 +1,20 @@
{
"variants": {
"east=false,north=false,south=false,west=false": { "model": "biomesoplenty:eucalyptus_fence_post" },
"east=false,north=true,south=false,west=false": { "model": "biomesoplenty:eucalyptus_fence_n", "uvlock": true },
"east=true,north=false,south=false,west=false": { "model": "biomesoplenty:eucalyptus_fence_n", "y": 90, "uvlock": true },
"east=false,north=false,south=true,west=false": { "model": "biomesoplenty:eucalyptus_fence_n", "y": 180, "uvlock": true },
"east=false,north=false,south=false,west=true": { "model": "biomesoplenty:eucalyptus_fence_n", "y": 270, "uvlock": true },
"east=true,north=true,south=false,west=false": { "model": "biomesoplenty:eucalyptus_fence_ne", "uvlock": true },
"east=true,north=false,south=true,west=false": { "model": "biomesoplenty:eucalyptus_fence_ne", "y": 90, "uvlock": true },
"east=false,north=false,south=true,west=true": { "model": "biomesoplenty:eucalyptus_fence_ne", "y": 180, "uvlock": true },
"east=false,north=true,south=false,west=true": { "model": "biomesoplenty:eucalyptus_fence_ne", "y": 270, "uvlock": true },
"east=false,north=true,south=true,west=false": { "model": "biomesoplenty:eucalyptus_fence_ns", "uvlock": true },
"east=true,north=false,south=false,west=true": { "model": "biomesoplenty:eucalyptus_fence_ns", "y": 90, "uvlock": true },
"east=true,north=true,south=true,west=false": { "model": "biomesoplenty:eucalyptus_fence_nse", "uvlock": true },
"east=true,north=false,south=true,west=true": { "model": "biomesoplenty:eucalyptus_fence_nse", "y": 90, "uvlock": true },
"east=false,north=true,south=true,west=true": { "model": "biomesoplenty:eucalyptus_fence_nse", "y": 180, "uvlock": true },
"east=true,north=true,south=false,west=true": { "model": "biomesoplenty:eucalyptus_fence_nse", "y": 270, "uvlock": true },
"east=true,north=true,south=true,west=true": { "model": "biomesoplenty:eucalyptus_fence_nsew", "uvlock": true }
}
}

View file

@ -0,0 +1,20 @@
{
"variants": {
"facing=south,in_wall=false,open=false": { "model": "biomesoplenty:eucalyptus_fence_gate_closed" },
"facing=west,in_wall=false,open=false": { "model": "biomesoplenty:eucalyptus_fence_gate_closed", "y": 90, "uvlock": true },
"facing=north,in_wall=false,open=false": { "model": "biomesoplenty:eucalyptus_fence_gate_closed", "y": 180, "uvlock": true },
"facing=east,in_wall=false,open=false": { "model": "biomesoplenty:eucalyptus_fence_gate_closed", "y": 270, "uvlock": true },
"facing=south,in_wall=false,open=true": { "model": "biomesoplenty:eucalyptus_fence_gate_open" },
"facing=west,in_wall=false,open=true": { "model": "biomesoplenty:eucalyptus_fence_gate_open", "y": 90, "uvlock": true },
"facing=north,in_wall=false,open=true": { "model": "biomesoplenty:eucalyptus_fence_gate_open", "y": 180, "uvlock": true },
"facing=east,in_wall=false,open=true": { "model": "biomesoplenty:eucalyptus_fence_gate_open", "y": 270, "uvlock": true },
"facing=south,in_wall=true,open=false": { "model": "biomesoplenty:eucalyptus_wall_gate_closed" },
"facing=west,in_wall=true,open=false": { "model": "biomesoplenty:eucalyptus_wall_gate_closed", "y": 90, "uvlock": true },
"facing=north,in_wall=true,open=false": { "model": "biomesoplenty:eucalyptus_wall_gate_closed", "y": 180, "uvlock": true },
"facing=east,in_wall=true,open=false": { "model": "biomesoplenty:eucalyptus_wall_gate_closed", "y": 270, "uvlock": true },
"facing=south,in_wall=true,open=true": { "model": "biomesoplenty:eucalyptus_wall_gate_open" },
"facing=west,in_wall=true,open=true": { "model": "biomesoplenty:eucalyptus_wall_gate_open", "y": 90, "uvlock": true },
"facing=north,in_wall=true,open=true": { "model": "biomesoplenty:eucalyptus_wall_gate_open", "y": 180, "uvlock": true },
"facing=east,in_wall=true,open=true": { "model": "biomesoplenty:eucalyptus_wall_gate_open", "y": 270, "uvlock": true }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"half=bottom": { "model": "biomesoplenty:half_slab_eucalyptus" },
"half=top": { "model": "biomesoplenty:upper_slab_eucalyptus" }
}
}

View file

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

View file

@ -2,7 +2,7 @@
"variants": {
"variant=pine": { "model": "biomesoplenty:pine_leaves" },
"variant=mahogany": { "model": "biomesoplenty:mahogany_leaves" },
"variant=red_big_flower": { "model": "biomesoplenty:red_big_flower_petal" },
"variant=yellow_big_flower": { "model": "biomesoplenty:yellow_big_flower_petal" }
"variant=ebony": { "model": "biomesoplenty:ebony_leaves" },
"variant=eucalyptus": { "model": "biomesoplenty:eucalyptus_leaves" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"variant=red_big_flower": { "model": "biomesoplenty:red_big_flower_petal" },
"variant=yellow_big_flower": { "model": "biomesoplenty:yellow_big_flower_petal" }
}
}

View file

@ -8,14 +8,14 @@
"axis=z,variant=mahogany": { "model": "biomesoplenty:mahogany_log_side" },
"axis=x,variant=mahogany": { "model": "biomesoplenty:mahogany_log_side", "y": 90 },
"axis=none,variant=mahogany": { "model": "biomesoplenty:mahogany_bark" },
"axis=y,variant=giant_flower": { "model": "biomesoplenty:giant_flower_stem" },
"axis=z,variant=giant_flower": { "model": "biomesoplenty:giant_flower_stem_side" },
"axis=x,variant=giant_flower": { "model": "biomesoplenty:giant_flower_stem_side", "y": 90 },
"axis=none,variant=giant_flower": { "model": "biomesoplenty:giant_flower_bark" },
"axis=y,variant=dead": { "model": "biomesoplenty:dead_log" },
"axis=z,variant=dead": { "model": "biomesoplenty:dead_log_side" },
"axis=x,variant=dead": { "model": "biomesoplenty:dead_log_side", "y": 90 },
"axis=none,variant=dead": { "model": "biomesoplenty:dead_bark" }
"axis=y,variant=ebony": { "model": "biomesoplenty:ebony_log" },
"axis=z,variant=ebony": { "model": "biomesoplenty:ebony_log_side" },
"axis=x,variant=ebony": { "model": "biomesoplenty:ebony_log_side", "y": 90 },
"axis=none,variant=ebony": { "model": "biomesoplenty:ebony_bark" },
"axis=y,variant=eucalyptus": { "model": "biomesoplenty:eucalyptus_log" },
"axis=z,variant=eucalyptus": { "model": "biomesoplenty:eucalyptus_log_side" },
"axis=x,variant=eucalyptus": { "model": "biomesoplenty:eucalyptus_log_side", "y": 90 },
"axis=none,variant=eucalyptus": { "model": "biomesoplenty:eucalyptus_bark" }
}
}

View file

@ -0,0 +1,13 @@
{
"variants": {
"axis=y,variant=giant_flower": { "model": "biomesoplenty:giant_flower_stem" },
"axis=z,variant=giant_flower": { "model": "biomesoplenty:giant_flower_stem_side" },
"axis=x,variant=giant_flower": { "model": "biomesoplenty:giant_flower_stem_side", "y": 90 },
"axis=none,variant=giant_flower": { "model": "biomesoplenty:giant_flower_bark" },
"axis=y,variant=dead": { "model": "biomesoplenty:dead_log" },
"axis=z,variant=dead": { "model": "biomesoplenty:dead_log_side" },
"axis=x,variant=dead": { "model": "biomesoplenty:dead_log_side", "y": 90 },
"axis=none,variant=dead": { "model": "biomesoplenty:dead_bark" }
}
}

View file

@ -14,6 +14,7 @@
"variant=pine": { "model": "biomesoplenty:pine_planks" },
"variant=hell_bark": { "model": "biomesoplenty:hell_bark_planks" },
"variant=jacaranda": { "model": "biomesoplenty:jacaranda_planks" },
"variant=mahogany": { "model": "biomesoplenty:mahogany_planks" }
"variant=mahogany": { "model": "biomesoplenty:mahogany_planks" },
"variant=ebony": { "model": "biomesoplenty:ebony_planks" }
}
}

View file

@ -13,6 +13,8 @@
"variant=pine": { "model": "biomesoplenty:pine_planks" },
"variant=hellbark": { "model": "biomesoplenty:hellbark_planks" },
"variant=jacaranda": { "model": "biomesoplenty:jacaranda_planks" },
"variant=mahogany": { "model": "biomesoplenty:mahogany_planks" }
"variant=mahogany": { "model": "biomesoplenty:mahogany_planks" },
"variant=ebony": { "model": "biomesoplenty:ebony_planks" },
"variant=eucalyptus": { "model": "biomesoplenty:eucalyptus_planks" }
}
}

View file

@ -5,6 +5,8 @@
"variant=redwood": { "model": "biomesoplenty:redwood_sapling" },
"variant=willow": { "model": "biomesoplenty:willow_sapling" },
"variant=pine": { "model": "biomesoplenty:pine_sapling" },
"variant=mahogany": { "model": "biomesoplenty:mahogany_sapling" }
"variant=mahogany": { "model": "biomesoplenty:mahogany_sapling" },
"variant=ebony": { "model": "biomesoplenty:ebony_sapling" },
"variant=eucalyptus": { "model": "biomesoplenty:eucalyptus_sapling" }
}
}

View file

@ -11,6 +11,10 @@
"half=bottom,variant=jacaranda": { "model": "biomesoplenty:half_slab_jacaranda" },
"half=top,variant=jacaranda": { "model": "biomesoplenty:upper_slab_jacaranda" },
"half=bottom,variant=mahogany": { "model": "biomesoplenty:half_slab_mahogany" },
"half=top,variant=mahogany": { "model": "biomesoplenty:upper_slab_mahogany" }
"half=top,variant=mahogany": { "model": "biomesoplenty:upper_slab_mahogany" },
"half=bottom,variant=ebony": { "model": "biomesoplenty:half_slab_ebony" },
"half=top,variant=ebony": { "model": "biomesoplenty:upper_slab_ebony" },
"half=bottom,variant=eucalyptus": { "model": "biomesoplenty:half_slab_eucalyptus" },
"half=top,variant=eucalyptus": { "model": "biomesoplenty:upper_slab_eucalyptus" }
}
}

View file

@ -104,8 +104,10 @@ item.dart.name=Dart
item.dart_blower.name=Dart Blower
item.diamond_scythe.name=Diamond Scythe
item.dull_flower_band.name=Dull Flower Band
item.ebony_door.name=Ebony Door
item.enderporter.name=Enderporter
item.ethereal_door.name=Ethereal Door
item.eucalyptus_door.name=Eucalyptus Door
item.exotic_flower_band.name=Exotic Flower Band
item.filled_honeycomb.name=Filled Honeycomb
item.fir_door.name=Fir Door
@ -209,10 +211,18 @@ tile.dirt.coarse_silty_dirt.name=Coarse Silty Dirt
tile.double_plant.flax.name=Flax
tile.double_plant.tall_cattail.name=Tail Cattail
tile.double_plant.eyebulb.name=Eyebulb
tile.ebony_fence.name=Ebony Fence
tile.ebony_fence_gate.name=Ebony Fence Gate
tile.ebony_wood_slab.name=Ebony Wood Slab
tile.ebony_stairs.name=Ebony Wood Stairs
tile.ethereal_fence.name=Ethereal Fence
tile.ethereal_fence_gate.name=Ethereal Fence Gate
tile.ethereal_wood_slab.name=Ethereal Wood Slab
tile.ethereal_stairs.name=Ethereal Wood Stairs
tile.eucalyptus_fence.name=Eucalyptus Fence
tile.eucalyptus_fence_gate.name=Eucalyptus Fence Gate
tile.eucalyptus_wood_slab.name=Eucalyptus Wood Slab
tile.eucalyptus_stairs.name=Eucalyptus Wood Stairs
tile.farmland_0.loamy_farmland.name=Loamy Farmland
tile.farmland_0.sandy_farmland.name=Sandy Farmland
tile.farmland_1.silty_farmland.name=Silty Farmland
@ -304,8 +314,10 @@ tile.leaves_4.redwood_leaves.name=Redwood Leaves
tile.leaves_4.willow_leaves.name=Willow Leaves
tile.leaves_5.pine_leaves.name=Pine Leaves
tile.leaves_5.mahogany_leaves.name=Mahogany Leaves
tile.leaves_5.red_big_flower_petal.name=Giant Red Flower Petal
tile.leaves_5.yellow_big_flower_petal.name=Giant Yellow Flower Petal
tile.leaves_5.ebony_leaves.name=Ebony Leaves
tile.leaves_5.eucalyptus_leaves.name=Eucalyptus Leaves
tile.leaves_6.red_big_flower_petal.name=Giant Red Flower Petal
tile.leaves_6.yellow_big_flower_petal.name=Giant Yellow Flower Petal
tile.log_0.sacred_oak_log.name=Sacred Oak Wood
tile.log_0.cherry_log.name=Cherry Wood
tile.log_0.umbran_log.name=Umbran Wood
@ -320,8 +332,10 @@ tile.log_2.pine_log.name=Pine Wood
tile.log_2.hellbark_log.name=Hellbark Wood
tile.log_3.jacaranda_log.name=Jacaranda Wood
tile.log_3.mahogany_log.name=Mahogany Wood
tile.log_3.giant_flower_stem.name=Giant Flower Stem
tile.log_3.dead_log.name=Dead Wood
tile.log_3.ebony_log.name=Ebony Wood
tile.log_3.eucalyptus_log.name=Eucalyptus Wood
tile.log_4.giant_flower_stem.name=Giant Flower Stem
tile.log_4.dead_log.name=Dead Wood
tile.magic_fence.name=Magic Fence
tile.magic_fence_gate.name=Magic Fence Gate
tile.magic_wood_slab.name=Magic Wood Slab
@ -369,6 +383,8 @@ tile.planks_0.pine_planks.name=Pine Wood Planks
tile.planks_0.hellbark_planks.name=Hellbark Wood Planks
tile.planks_0.jacaranda_planks.name=Jacaranda Wood Planks
tile.planks_0.mahogany_planks.name=Mahogany Wood Planks
tile.planks_0.ebony_planks.name=Ebony Wood Planks
tile.planks_0.eucalyptus_planks.name=Eucalyptus Wood Planks
tile.plant_0.shortgrass.name=Short Grass
tile.plant_0.mediumgrass.name=Medium Grass
tile.plant_0.bush.name=Bush
@ -428,6 +444,8 @@ tile.sapling_2.redwood_sapling.name=Redwood Sapling
tile.sapling_2.willow_sapling.name=Willow Sapling
tile.sapling_2.pine_sapling.name=Pine Sapling
tile.sapling_2.mahogany_sapling.name=Mahogany Sapling
tile.sapling_2.ebony_sapling.name=Ebony Sapling
tile.sapling_2.eucalyptus_sapling.name=Eucalyptus Sapling
tile.seaweed.kelp.name=Kelp
tile.stone.limestone.name=Limestone
tile.stone.polished_limestone.name=Polished Limestone

View file

@ -104,8 +104,10 @@ item.dart.name=飛鏢
item.dart_blower.name=吹箭
item.diamond_scythe.name=鑽石鐮
item.dull_flower_band.name=單調的花環
item.ebony_door.name=檀木門
item.enderporter.name=終界傳送器
item.ethereal_door.name=空靈木門
item.eucalyptus_door.name=尤加利木門
item.exotic_flower_band.name=異國花環
item.filled_honeycomb.name=填滿的蜂巢
item.fir_door.name=冷杉木門
@ -209,10 +211,18 @@ tile.dirt.coarse_silty_dirt.name=粗淤土
tile.double_plant.flax.name=亞麻
tile.double_plant.tall_cattail.name=香蒲
tile.double_plant.eyebulb.name=眼燈草
tile.ebony_fence.name=檀木柵欄
tile.ebony_fence_gate.name=檀木柵欄門
tile.ebony_wood_slab.name=檀木半磚
tile.ebony_stairs.name=檀木階梯
tile.ethereal_fence.name=空靈木柵欄
tile.ethereal_fence_gate.name=空靈木柵欄門
tile.ethereal_wood_slab.name=空靈木半磚
tile.ethereal_stairs.name=空靈木階梯
tile.eucalyptus_fence.name=尤加利木柵欄
tile.eucalyptus_fence_gate.name=尤加利木柵欄門
tile.eucalyptus_wood_slab.name=尤加利木半磚
tile.eucalyptus_stairs.name=尤加利木階梯
tile.farmland_0.loamy_farmland.name=壤質耕地
tile.farmland_0.sandy_farmland.name=砂質耕地
tile.farmland_1.silty_farmland.name=泥質耕地
@ -304,8 +314,10 @@ tile.leaves_4.redwood_leaves.name=紅木葉
tile.leaves_4.willow_leaves.name=柳葉
tile.leaves_5.pine_leaves.name=松葉
tile.leaves_5.mahogany_leaves.name=桃花心木葉
tile.leaves_5.red_big_flower_petal.name=巨紅花瓣
tile.leaves_5.yellow_big_flower_petal.name=巨黃花瓣
tile.leaves_5.ebony_leaves.name=檀木樹葉
tile.leaves_5.eucalyptus_leaves.name=尤加利樹葉
tile.leaves_6.red_big_flower_petal.name=巨紅花瓣
tile.leaves_6.yellow_big_flower_petal.name=巨黃花瓣
tile.log_0.sacred_oak_log.name=聖橡木原木
tile.log_0.cherry_log.name=櫻木原木
tile.log_0.umbran_log.name=暗影原木
@ -320,8 +332,10 @@ tile.log_2.pine_log.name=松原木
tile.log_2.hellbark_log.name=獄皮原木
tile.log_3.jacaranda_log.name=藍花楹原木
tile.log_3.mahogany_log.name=桃花心木原木
tile.log_3.giant_flower_stem.name=巨大花柄
tile.log_3.dead_log.name=死亡原木
tile.log_3.ebony_log.name=檀木原木
tile.log_3.eucalyptus_log.name=尤加利原木
tile.log_4.giant_flower_stem.name=巨大花柄
tile.log_4.dead_log.name=死亡原木
tile.magic_fence.name=魔木柵欄
tile.magic_fence_gate.name=魔木柵欄門
tile.magic_wood_slab.name=魔木半磚
@ -369,6 +383,8 @@ tile.planks_0.pine_planks.name=松木材
tile.planks_0.hellbark_planks.name=獄皮木材
tile.planks_0.jacaranda_planks.name=藍花楹木材
tile.planks_0.mahogany_planks.name=桃花心木材
tile.planks_0.ebony_planks.name=檀木木材
tile.planks_0.eucalyptus_planks.name=尤加利木材
tile.plant_0.shortgrass.name=短草
tile.plant_0.mediumgrass.name=中等草
tile.plant_0.bush.name=灌木叢
@ -428,6 +444,8 @@ tile.sapling_2.redwood_sapling.name=紅木樹苗
tile.sapling_2.willow_sapling.name=柳樹樹苗
tile.sapling_2.pine_sapling.name=松樹樹苗
tile.sapling_2.mahogany_sapling.name=桃花心木樹苗
tile.sapling_2.ebony_sapling.name=檀木樹苗
tile.sapling_2.eucalyptus_sapling.name=尤加利樹苗
tile.seaweed.kelp.name=海帶
tile.stone.limestone.name=石灰岩半磚
tile.stone.polished_limestone.name=平滑石灰岩

View file

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

View file

@ -0,0 +1,7 @@
{
"parent": "block/door_bottom",
"textures": {
"bottom": "biomesoplenty:blocks/door_ebony_lower",
"top": "biomesoplenty:blocks/door_ebony_upper"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "block/door_bottom_rh",
"textures": {
"bottom": "biomesoplenty:blocks/door_ebony_lower",
"top": "biomesoplenty:blocks/door_ebony_upper"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "block/door_top",
"textures": {
"bottom": "biomesoplenty:blocks/door_ebony_lower",
"top": "biomesoplenty:blocks/door_ebony_upper"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "block/door_top_rh",
"textures": {
"bottom": "biomesoplenty:blocks/door_ebony_lower",
"top": "biomesoplenty:blocks/door_ebony_upper"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/fence_gate_closed",
"textures": {
"texture": "biomesoplenty:blocks/ebony_planks"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/fence_gate_open",
"textures": {
"texture": "biomesoplenty:blocks/ebony_planks"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "block/fence_inventory",
"textures": {
"texture": "biomesoplenty:blocks/ebony_planks"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/fence_n",
"textures": {
"texture": "biomesoplenty:blocks/ebony_planks"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/fence_ne",
"textures": {
"texture": "biomesoplenty:blocks/ebony_planks"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/fence_ns",
"textures": {
"texture": "biomesoplenty:blocks/ebony_planks"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/fence_nse",
"textures": {
"texture": "biomesoplenty:blocks/ebony_planks"
}
}

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