Added white sand beaches to the Tropical Island (Includes white sand/sandstone blocks)

This commit is contained in:
Forstride 2017-06-06 01:44:48 -04:00
parent 6f2b55aa47
commit d7928f8bb9
48 changed files with 482 additions and 19 deletions

View File

@ -90,6 +90,7 @@ public class BOPBiomes
public static Optional<Biome> volcanic_island = Optional.absent();
public static Optional<Biome> flower_island = Optional.absent();
public static Optional<Biome> gravel_beach = Optional.absent();
public static Optional<Biome> white_beach = Optional.absent();
// nether biomes
public static Optional<Biome> corrupted_sands = Optional.absent();

View File

@ -15,6 +15,7 @@ public class BOPBlocks
{
public static Block bamboo_thatching;
public static Block ash_block;
public static Block white_sand;
public static Block bamboo;
public static Block coral;
public static Block seaweed;
@ -23,6 +24,7 @@ public class BOPBlocks
public static Block hive;
public static Block mushroom;
public static Block stone;
public static Block white_sandstone;
public static Block biome_block;
public static Block flower_0;
@ -131,6 +133,7 @@ public class BOPBlocks
public static Block double_other_slab;
public static Block mud_brick_stairs;
public static Block white_sandstone_stairs;
public static Block flower_vine;
public static Block ivy;

View File

@ -199,6 +199,11 @@ public class BOPOverworldBiome extends BOPBiome
dirtBlocksToFill = rand.nextInt(4) + Math.max(0, y - 63);
fillerBlock = fillerBlock.getValue(BlockSand.VARIANT) == BlockSand.EnumType.RED_SAND ? Blocks.RED_SANDSTONE.getDefaultState() : Blocks.SANDSTONE.getDefaultState();
}
if (dirtBlocksToFill == 0 && fillerBlock.getBlock() == BOPBlocks.white_sand)
{
dirtBlocksToFill = rand.nextInt(4) + Math.max(0, y - 63);
fillerBlock = BOPBlocks.white_sandstone.getDefaultState();
}
}
}
}

View File

@ -11,6 +11,7 @@ import biomesoplenty.api.enums.BOPPlants;
import biomesoplenty.api.enums.BOPTrees;
import biomesoplenty.api.enums.BOPWoods;
import biomesoplenty.api.generation.GeneratorStage;
import biomesoplenty.common.block.BlockBOPLeaves;
import biomesoplenty.common.block.BlockBOPLilypad;
import biomesoplenty.common.world.generator.GeneratorDoubleFlora;
import biomesoplenty.common.world.generator.GeneratorFlora;
@ -22,6 +23,7 @@ import biomesoplenty.common.world.generator.tree.GeneratorBigTree;
import biomesoplenty.common.world.generator.tree.GeneratorBush;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockFlower;
import net.minecraft.block.BlockOldLeaf;
import net.minecraft.block.BlockFlower.EnumFlowerType;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockTallGrass;
@ -53,7 +55,7 @@ public class BiomeGenSacredSprings extends BOPOverworldBiome
this.addGenerator("hot_springs", GeneratorStage.SAND, (new GeneratorLakes.Builder()).amountPerChunk(0.5F).liquid(BOPBlocks.hot_spring_water).frozenLiquid((IBlockState)null).create());
// trees
this.addGenerator("sacred_oak_trees", GeneratorStage.POST, (new GeneratorBigTree.Builder()).amountPerChunk(0.2F).log(BOPWoods.SACRED_OAK).leaves(BOPTrees.SACRED_OAK).minHeight(35).maxHeight(40).trunkWidth(2).foliageDensity(2.0D).create());
this.addGenerator("sacred_oak_trees", GeneratorStage.POST, (new GeneratorBigTree.Builder()).amountPerChunk(0.2F).log(BOPWoods.SACRED_OAK).leaves(BlockBOPLeaves.paging.getVariantState(BOPTrees.SACRED_OAK).withProperty(BlockOldLeaf.DECAYABLE, Boolean.valueOf(false))).minHeight(35).maxHeight(40).trunkWidth(2).foliageDensity(2.0D).create());
this.addGenerator("leaves_clusters", GeneratorStage.TREE, (new GeneratorBush.Builder()).amountPerChunk(12.5F).maxHeight(2).create());
this.addGenerator("large_oak", GeneratorStage.TREE, (new GeneratorBigTree.Builder()).amountPerChunk(3.0F).log(BlockPlanks.EnumType.OAK).leaves(BlockPlanks.EnumType.OAK).altLeaves(BOPTrees.FLOWERING).create());

View File

@ -8,6 +8,7 @@
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.BlockQueries;
import biomesoplenty.api.config.IBOPWorldSettings;
@ -43,6 +44,11 @@ public class BiomeGenTropicalIsland extends BOPOverworldBiome
// terrain
this.terrainSettings.avgHeight(64).heightVariation(5, 40).octaves(0, 1, 2, 2, 1, 0).sidewaysNoise(0.2D);
if (BOPBiomes.white_beach.isPresent())
{
this.beachBiomeLocation = ((BOPOverworldBiome)BOPBiomes.white_beach.get()).getResourceLocation();
}
this.canSpawnInBiome = true;
this.canGenerateVillages = false;
this.canGenerateRivers = false;
@ -57,7 +63,7 @@ public class BiomeGenTropicalIsland extends BOPOverworldBiome
clearWeights();
// sand
this.addGenerator("sand", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(10).maxRadius(7).with(Blocks.SAND.getDefaultState()).create());
this.addGenerator("sand", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(10).maxRadius(7).with(BOPBlocks.white_sand.getDefaultState()).create());
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(25.0F);

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 biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.config.IBOPWorldSettings;
import biomesoplenty.api.config.IBOPWorldSettings.GeneratorType;
import biomesoplenty.common.world.generator.GeneratorWeighted;
import net.minecraft.init.Blocks;
public class BiomeGenWhiteBeach extends BOPOverworldBiome
{
public BiomeGenWhiteBeach()
{
super("white_beach", new PropsBuilder("White Beach").withTemperature(1.0F).withRainfall(1.0F).withGuiColour(0xF3F1E4));
// terrain
this.terrainSettings.avgHeight(64).heightVariation(1, 1);
this.canSpawnInBiome = false;
this.canGenerateVillages = false;
this.spawnableMonsterList.clear();
this.spawnableCreatureList.clear();
this.theBiomeDecorator.treesPerChunk = -999;
this.theBiomeDecorator.deadBushPerChunk = 0;
this.theBiomeDecorator.reedsPerChunk = 0;
this.theBiomeDecorator.cactiPerChunk = 0;
this.skyColor = 507391;
this.fogColor = 0xB5F8FF;
clearWeights();
this.topBlock = BOPBlocks.white_sand.getDefaultState();
this.fillerBlock = BOPBlocks.white_sand.getDefaultState();
}
@Override
public void applySettings(IBOPWorldSettings settings)
{
if (!settings.isEnabled(GeneratorType.MUSHROOMS)) {this.removeGenerator("glowshrooms");}
if (!settings.isEnabled(GeneratorType.FLOWERS)) {this.removeGenerator("miners_delight");}
if (!settings.isEnabled(GeneratorType.ROCK_FORMATIONS)) {this.removeGenerator("stone_formations");}
if (!settings.isEnabled(GeneratorType.MUSHROOMS)) {this.removeGenerator("toadstools"); this.removeGenerator("flat_mushroom"); this.removeGenerator("blue_milk_caps"); this.removeGenerator("portobellos");}
if (!settings.isEnabled(GeneratorType.PLANTS)) {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");}
}
}

View File

@ -247,7 +247,7 @@ public class BlockBOPFlower extends BlockBOPDecoration implements IShearable, IH
Block groundBlock = groundState.getBlock();
boolean onFertile = (groundBlock == Blocks.DIRT || groundBlock == Blocks.FARMLAND || groundBlock == BOPBlocks.farmland_0 || groundBlock == BOPBlocks.farmland_1 || groundBlock == BOPBlocks.dirt || groundBlock == Blocks.GRASS);
boolean onDry = (groundBlock == Blocks.HARDENED_CLAY || groundBlock == BOPBlocks.sand || groundBlock == Blocks.SAND);
boolean onDry = (groundBlock == Blocks.HARDENED_CLAY || groundBlock == BOPBlocks.sand || groundBlock == Blocks.SAND || groundBlock == BOPBlocks.white_sand);
boolean onNetherrack = (groundBlock == Blocks.NETHERRACK);
boolean onStone = (groundBlock == Blocks.STONE);
boolean onDriedSand = (groundBlock == BOPBlocks.dried_sand);

View File

@ -13,6 +13,7 @@ import java.util.List;
import com.google.common.collect.ImmutableSet;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.block.BlockBOPWhiteSandstone.StoneType;
import biomesoplenty.common.util.block.BlockStateUtils;
import net.minecraft.block.BlockSlab;
import net.minecraft.block.SoundType;
@ -39,7 +40,7 @@ public class BlockBOPHalfOtherSlab extends BlockSlab implements IBOPBlock
// add properties
public static enum SlabType implements IStringSerializable
{
MUD_BRICK;
MUD_BRICK, WHITE_SANDSTONE;
@Override
public String getName()
{
@ -60,6 +61,9 @@ public class BlockBOPHalfOtherSlab extends BlockSlab implements IBOPBlock
case MUD_BRICK:
state = BOPBlocks.mud_brick_block.getDefaultState();
break;
case WHITE_SANDSTONE:
state = BOPBlocks.white_sandstone.getDefaultState().withProperty(BlockBOPWhiteSandstone.VARIANT, StoneType.SMOOTH);
break;
default:
throw new RuntimeException("No full block state defined for SlabType " + this.name());
}

View File

@ -212,7 +212,7 @@ public class BlockBOPSapling extends BlockBOPDecoration implements IGrowable, IP
case JACARANDA:
return new GeneratorBasicTree.Builder().minHeight(4).maxHeight(7).log(BOPWoods.JACARANDA).leaves(BOPTrees.JACARANDA).updateNeighbours(true).create();
case SACRED_OAK:
return new GeneratorBigTree.Builder().log(BOPWoods.SACRED_OAK).leaves(BOPTrees.SACRED_OAK).minHeight(35).maxHeight(45).trunkWidth(2).foliageDensity(1.25D).updateNeighbours(true).create();
return new GeneratorBigTree.Builder().log(BOPWoods.SACRED_OAK).leaves(BlockBOPLeaves.paging.getVariantState(BOPTrees.SACRED_OAK).withProperty(BlockOldLeaf.DECAYABLE, Boolean.valueOf(false))).minHeight(35).maxHeight(45).trunkWidth(2).foliageDensity(1.25D).updateNeighbours(true).create();
case MANGROVE:
return new GeneratorMangroveTree.Builder().log(BOPWoods.MANGROVE).leaves(BOPTrees.MANGROVE).create();
case PALM:

View File

@ -0,0 +1,53 @@
package biomesoplenty.common.block;
import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.BlockFalling;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.item.ItemBlock;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class BlockBOPWhiteSand extends BlockFalling implements IBOPBlock
{
// implement IBOPBlock
@Override
public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
@Override
public IProperty[] getPresetProperties() { return new IProperty[] {}; }
@Override
public IProperty[] getNonRenderingProperties() { return null; }
@Override
public String getStateName(IBlockState state) {return "";}
@Override
@SideOnly(Side.CLIENT)
public IBlockColor getBlockColor() { return null; }
@Override
@SideOnly(Side.CLIENT)
public IItemColor getItemColor() { return null; }
public BlockBOPWhiteSand()
{
super(Material.SAND);
this.setHardness(0.5F);
this.setSoundType(SoundType.SAND);
}
@Override
public MapColor getMapColor(IBlockState state)
{
return MapColor.SAND;
}
@SideOnly(Side.CLIENT)
@Override
public int getDustColor(IBlockState p_189876_1_)
{
return -790043;
}
}

View File

@ -0,0 +1,120 @@
/*******************************************************************************
* Copyright 2014-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.block;
import java.util.Random;
import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.entities.EntityWasp;
import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class BlockBOPWhiteSandstone extends Block implements IBOPBlock
{
// add properties
public static enum StoneType implements IStringSerializable
{
DEFAULT, CHISELED, SMOOTH;
@Override
public String getName()
{
return this.name().toLowerCase();
}
@Override
public String toString()
{
return this.getName();
}
};
public static final PropertyEnum VARIANT = PropertyEnum.create("variant", StoneType.class);
@Override
protected BlockStateContainer createBlockState() {return new BlockStateContainer(this, new IProperty[] { VARIANT });}
// implement IBOPBlock
@Override
public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
@Override
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
@Override
public IProperty[] getNonRenderingProperties() { return null; }
@Override
public String getStateName(IBlockState state)
{
switch ((StoneType) state.getValue(VARIANT))
{
case CHISELED:
return "chiseled_white_sandstone";
case SMOOTH:
return "smooth_white_sandstone";
default:
return "white_sandstone";
}
}
@Override
@SideOnly(Side.CLIENT)
public IBlockColor getBlockColor() { return null; }
@Override
@SideOnly(Side.CLIENT)
public IItemColor getItemColor() { return null; }
public BlockBOPWhiteSandstone()
{
super(Material.ROCK);
// set some defaults
this.setHardness(0.8F);
this.setSoundType(SoundType.STONE);
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, StoneType.DEFAULT) );
}
@Override
public MapColor getMapColor(IBlockState state)
{
return MapColor.SAND;
}
// map from state to meta and vice verca
@Override
public IBlockState getStateFromMeta(int meta)
{
return this.getDefaultState().withProperty(VARIANT, StoneType.values()[meta]);
}
@Override
public int getMetaFromState(IBlockState state)
{
return ((StoneType) state.getValue(VARIANT)).ordinal();
}
@Override
public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player)
{
return new ItemStack(this, 1, this.getMetaFromState(state));
}
}

View File

@ -1,6 +1,9 @@
package biomesoplenty.common.handler;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.item.BOPItems;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.world.storage.loot.LootEntryItem;
import net.minecraft.world.storage.loot.LootPool;
import net.minecraft.world.storage.loot.LootTableList;
@ -30,6 +33,7 @@ public class LootTableEventHandler
{
main.addEntry(new LootEntryItem(BOPItems.pear, 4, 2, new LootFunction[0], new LootCondition[0], "biomesoplenty:pear"));
main.addEntry(new LootEntryItem(BOPItems.peach, 4, 2, new LootFunction[0], new LootCondition[0], "biomesoplenty:peach"));
main.addEntry(new LootEntryItem(BOPItems.persimmon, 4, 2, new LootFunction[0], new LootCondition[0], "biomesoplenty:persimmon"));
}
}
if (event.getName().equals(LootTableList.CHESTS_VILLAGE_BLACKSMITH))
@ -37,9 +41,17 @@ public class LootTableEventHandler
LootPool main = event.getTable().getPool("main");
if (main != null)
{
main.addEntry(new LootEntryItem(BOPItems.flippers, 2, 1, new LootFunction[0], new LootCondition[0], "biomesoplenty:flippers"));
main.addEntry(new LootEntryItem(BOPItems.wading_boots, 2, 1, new LootFunction[0], new LootCondition[0], "biomesoplenty:wading_boots"));
main.addEntry(new LootEntryItem(BOPItems.flippers, 3, 1, new LootFunction[0], new LootCondition[0], "biomesoplenty:flippers"));
main.addEntry(new LootEntryItem(BOPItems.wading_boots, 3, 1, new LootFunction[0], new LootCondition[0], "biomesoplenty:wading_boots"));
}
}
if (event.getName().equals(LootTableList.GAMEPLAY_FISHING_JUNK))
{
LootPool main = event.getTable().getPool("main");
if (main != null)
{
main.addEntry(new LootEntryItem(new ItemStack(BOPBlocks.seaweed).getItem(), 7, 1, new LootFunction[0], new LootCondition[0], "biomesoplenty:seaweed"));
}
}
}
}

View File

@ -96,6 +96,7 @@ 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.BiomeGenWhiteBeach;
import biomesoplenty.common.biome.overworld.BiomeGenWoodland;
import biomesoplenty.common.biome.overworld.BiomeGenXericShrubland;
import biomesoplenty.common.biome.vanilla.BiomeExtBirchForest;
@ -246,6 +247,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry
// beach biomes (normal biomes rely on these being registered first)
gravel_beach = registerOverworldBiome(new BiomeGenGravelBeach());
white_beach = registerOverworldBiome(new BiomeGenWhiteBeach());
// normal biomes which have weights
alps = registerOverworldBiome(new BiomeGenAlps());
@ -442,6 +444,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry
registerBiomeToDictionary(BOPBiomes.flower_island, Type.WATER, Type.OCEAN, Type.PLAINS, Type.LUSH, Type.DENSE, Type.MAGICAL);
registerBiomeToDictionary(BOPBiomes.origin_island, Type.OCEAN, Type.FOREST, Type.RARE);
registerBiomeToDictionary(BOPBiomes.gravel_beach, Type.BEACH);
registerBiomeToDictionary(BOPBiomes.white_beach, Type.BEACH);
registerBiomeToDictionary(BOPBiomes.corrupted_sands, Type.NETHER, Type.HOT, Type.DRY, Type.SANDY, Type.SPOOKY);
registerBiomeToDictionary(BOPBiomes.fungi_forest, Type.NETHER, Type.HOT, Type.MUSHROOM, Type.DENSE);

View File

@ -146,7 +146,7 @@ public class ModBlockQueries
fertile = BlockQuery.buildAnd().sustainsPlant(EnumPlantType.Plains).create();
fertileOrNetherrack = BlockQuery.buildOr().sustainsPlant(EnumPlantType.Plains).blocks(Blocks.NETHERRACK).states(BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.OVERGROWN_NETHERRACK), BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.MYCELIAL_NETHERRACK)).create();
fertileOrSand = BlockQuery.buildOr().sustainsPlant(EnumPlantType.Plains).blocks(Blocks.SAND).create();
fertileOrSand = BlockQuery.buildOr().sustainsPlant(EnumPlantType.Plains).blocks(Blocks.SAND, BOPBlocks.white_sand).create();
sustainsCave = BlockQuery.buildAnd().sustainsPlant(EnumPlantType.Cave).create();
sustainsNether = BlockQuery.buildAnd().sustainsPlant(EnumPlantType.Nether).create();
endish = BlockQuery.buildOr().blocks(Blocks.END_STONE).states(BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.SPECTRAL_MOSS)).create();

View File

@ -54,8 +54,11 @@ import biomesoplenty.common.block.BlockBOPStoneStairs;
import biomesoplenty.common.block.BlockBOPTerrarium;
import biomesoplenty.common.block.BlockBOPTurnip;
import biomesoplenty.common.block.BlockBOPVine;
import biomesoplenty.common.block.BlockBOPWhiteSand;
import biomesoplenty.common.block.BlockBOPWhiteSandstone;
import biomesoplenty.common.block.BlockBOPWoodStairs;
import biomesoplenty.common.block.IBOPBlock;
import biomesoplenty.common.block.BlockBOPWhiteSandstone.StoneType;
import biomesoplenty.common.command.BOPCommand;
import biomesoplenty.common.fluids.BloodFluid;
import biomesoplenty.common.fluids.HoneyFluid;
@ -107,6 +110,10 @@ public class ModBlocks
farmland_0 = registerBlock( BlockBOPFarmland.paging.getBlock(0), "farmland_0", null);
farmland_1 = registerBlock( BlockBOPFarmland.paging.getBlock(1), "farmland_1", null);
white_sand = registerBlock( new BlockBOPWhiteSand(), "white_sand" );
white_sandstone = registerBlock( new BlockBOPWhiteSandstone(), "white_sandstone" );
white_sandstone_stairs =registerBlock( new BlockBOPStoneStairs(white_sandstone.getDefaultState().withProperty(BlockBOPWhiteSandstone.VARIANT, StoneType.SMOOTH)), "white_sandstone_stairs");
dried_sand = registerBlock( (new BlockBOPGeneric()).addSupportedPlantType(EnumPlantType.Desert), "dried_sand"); dried_sand.setHarvestLevel("pickaxe",0);
hard_ice = registerBlock( (new BlockBOPGeneric(Material.PACKED_ICE, SoundType.STONE)).setHardness(0.75F), "hard_ice" );
ash_block = registerBlock( new BlockBOPAsh(), "ash_block" );
@ -126,7 +133,7 @@ public class ModBlocks
bamboo_thatching = registerBlock( (new BlockBOPGeneric(Material.WOOD, SoundType.WOOD)).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( new BlockBOPStoneStairs(mud_brick_block.getDefaultState()), "mud_brick_stairs");
//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", CreativeTabBOP.instance, false);

View File

@ -12,6 +12,7 @@ import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.enums.*;
import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.block.*;
import biomesoplenty.common.block.BlockBOPWhiteSandstone.StoneType;
import biomesoplenty.common.crafting.BiomeEssenceRecipe;
import biomesoplenty.common.handler.FurnaceFuelHandler;
import biomesoplenty.common.item.ItemJarFilled;
@ -89,6 +90,15 @@ public class ModCrafting
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.mud_brick_stairs, 4), " R", " RR", "RRR", 'R', BOPBlocks.mud_brick_block);
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.mud_brick_stairs, 4), "R ", "RR ", "RRR", 'R', BOPBlocks.mud_brick_block);
GameRegistry.addShapedRecipe(new ItemStack(Blocks.TNT, 1), "GSG", "SGS", "GSG", 'S', BOPBlocks.white_sand, 'G', Items.GUNPOWDER);
// White Sandstone
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.white_sandstone_stairs, 4), " R", " RR", "RRR", 'R', BOPBlocks.white_sandstone);
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.white_sandstone_stairs, 4), "R ", "RR ", "RRR", 'R', BOPBlocks.white_sandstone);
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.white_sandstone, 1), "RR", "RR", 'R', BOPBlocks.white_sand);
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.white_sandstone, 4, BlockBOPWhiteSandstone.StoneType.SMOOTH.ordinal()), "RR", "RR", 'R', BOPBlocks.white_sandstone);
GameRegistry.addShapedRecipe(new ItemStack(BOPBlocks.white_sandstone, 1, BlockBOPWhiteSandstone.StoneType.CHISELED.ordinal()), "R", "R", 'R', new ItemStack(BOPBlocks.other_slab, 1, BlockBOPHalfOtherSlab.SlabType.WHITE_SANDSTONE.ordinal()));
/*** Wood stairs and slabs ***/
@ -260,9 +270,10 @@ public class ModCrafting
{
// Register smelting recipes
GameRegistry.addSmelting(new ItemStack(BOPBlocks.mud), new ItemStack(Blocks.DIRT), 0F);
GameRegistry.addSmelting(new ItemStack(BOPBlocks.mud), new ItemStack(Blocks.DIRT), 0.1F);
GameRegistry.addSmelting(new ItemStack(BOPBlocks.white_sand), new ItemStack(Blocks.GLASS), 0.1F);
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);
GameRegistry.addSmelting(BOPItems.mudball, new ItemStack(BOPItems.mud_brick), 0.1F);
for (BOPWoods wood : BOPWoods.values())
{
if (wood.canMakeCharcoal())
@ -311,6 +322,9 @@ public class ModCrafting
OreDictionary.registerOre("blockMud", new ItemStack(BOPBlocks.mud));
OreDictionary.registerOre("sand", new ItemStack(BOPBlocks.white_sand));
OreDictionary.registerOre("sandstone", new ItemStack(BOPBlocks.white_sandstone, 1, OreDictionary.WILDCARD_VALUE));
OreDictionary.registerOre("foodMushroompowder", new ItemStack(BOPItems.shroompowder));
OreDictionary.registerOre("foodFruitsalad", new ItemStack(BOPItems.saladfruit));
OreDictionary.registerOre("foodVeggiesalad", new ItemStack(BOPItems.saladveggie));

View File

@ -219,11 +219,11 @@ public class ModItems
// WOOD(0, 59, 2.0F, 0.0F, 15),
// STONE(1, 131, 4.0F, 1.0F, 5),
// IRON(2, 250, 6.0F, 2.0F, 14),
// EMERALD(3, 1561, 8.0F, 3.0F, 10),
// DIAMOND(3, 1561, 8.0F, 3.0F, 10),
// GOLD(0, 32, 12.0F, 0.0F, 22);
mud_tool_material = EnumHelper.addToolMaterial("MUD", 0, 32, 0.5F, 0.0F, 1);
mud_tool_material = EnumHelper.addToolMaterial("MUD", 0, 3, 0.25F, 0.0F, 1);
mud_tool_material.setRepairItem(new ItemStack(mudball));
setAxeDamageAndSpeed(mud_tool_material, 3.0F, -3.3F);
setAxeDamageAndSpeed(mud_tool_material, 1.0F, -3.3F);
// ItemAxe and ItemPickaxe have protected constructors - use reflection to construct
mud_axe = registerItem(BOPReflectionHelper.construct(ItemAxe.class, mud_tool_material), "mud_axe");

View File

@ -291,14 +291,14 @@ public class BlockQuery
// Otherwise fall back to the vanilla code
switch (this.plantType)
{
case Desert: return block == Blocks.SAND || block == Blocks.HARDENED_CLAY || block == Blocks.STAINED_HARDENED_CLAY || block == Blocks.DIRT || block == BOPBlocks.dirt;
case Desert: return block == Blocks.SAND || block == Blocks.HARDENED_CLAY || block == Blocks.STAINED_HARDENED_CLAY || block == Blocks.DIRT || block == BOPBlocks.dirt || block == BOPBlocks.white_sand;
case Nether: return block == Blocks.SOUL_SAND || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.OVERGROWN_NETHERRACK);
case Crop: return block == Blocks.FARMLAND || block == BOPBlocks.farmland_0 || block == BOPBlocks.farmland_1;
case Cave: return block.isSideSolid(state, world, pos, EnumFacing.UP);
case Plains: return block == Blocks.GRASS || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.LOAMY) || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.SILTY) || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.SANDY) || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.DAISY) || block == Blocks.DIRT || block == BOPBlocks.dirt || block == Blocks.FARMLAND || block == BOPBlocks.farmland_0 || block == BOPBlocks.farmland_1 || block == Blocks.MYCELIUM;
case Water: return state.getMaterial() == Material.WATER && ((Integer)state.getValue(BlockLiquid.LEVEL)) == 0;
case Beach:
boolean isBeach = block == Blocks.GRASS || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.LOAMY) || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.SILTY) || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.SANDY) || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.DAISY) || block == Blocks.DIRT || block == BOPBlocks.dirt || block == Blocks.SAND || block == Blocks.MYCELIUM;
boolean isBeach = block == Blocks.GRASS || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.LOAMY) || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.SILTY) || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.SANDY) || state == BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.DAISY) || block == Blocks.DIRT || block == BOPBlocks.dirt || block == BOPBlocks.white_sand || block == Blocks.SAND || block == Blocks.MYCELIUM;
boolean hasWater = (world.getBlockState(pos.east()).getMaterial() == Material.WATER ||
world.getBlockState(pos.west()).getMaterial() == Material.WATER ||
world.getBlockState(pos.north()).getMaterial() == Material.WATER ||

View File

@ -1,5 +1,6 @@
{
"variants": {
"variant=mud_brick": { "model": "biomesoplenty:mud_brick_block" }
"variant=mud_brick": { "model": "biomesoplenty:mud_brick_block" },
"variant=white_sandstone": { "model": "biomesoplenty:white_sandstone_normal" }
}
}

View File

@ -1,6 +1,8 @@
{
"variants": {
"half=bottom,variant=mud_brick": { "model": "biomesoplenty:half_slab_mud_brick" },
"half=top,variant=mud_brick": { "model": "biomesoplenty:upper_slab_mud_brick" }
"half=top,variant=mud_brick": { "model": "biomesoplenty:upper_slab_mud_brick" },
"half=bottom,variant=white_sandstone": { "model": "biomesoplenty:half_slab_white_sandstone" },
"half=top,variant=white_sandstone": { "model": "biomesoplenty:upper_slab_white_sandstone" }
}
}

View File

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

View File

@ -0,0 +1,7 @@
{
"variants": {
"variant=default": { "model": "biomesoplenty:white_sandstone_normal" },
"variant=chiseled": { "model": "biomesoplenty:white_sandstone_chiseled" },
"variant=smooth": { "model": "biomesoplenty:white_sandstone_smooth" }
}
}

View File

@ -0,0 +1,6 @@
{
"variants": {
"normal": { "model": "biomesoplenty:white_sandstone_normal" },
"all": { "model": "biomesoplenty:white_sandstone_all" }
}
}

View File

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

View File

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

View File

@ -453,7 +453,13 @@ tile.umbran_stairs.name=Umbran Wood Stairs
tile.waterlily.lily_medium.name=Medium Lily Pad
tile.waterlily.lily_small.name=Small Lily Pad
tile.waterlily.lily_tiny.name=Tiny Lily Pad
tile.waterlily.lily_flower.name=Flowered Lily Pad
tile.waterlily.lily_flower.name=Flowered Lily
tile.white_sand.name=White Sand
tile.white_sandstone.white_sandstone.name=White Sandstone
tile.white_sandstone.chiseled_white_sandstone.name=Chiseled White Sandstone
tile.white_sandstone.smooth_white_sandstone.name=Smooth White Sandstone
tile.white_sandstone_slab.name=White Sandstone Slab
tile.white_sandstone_stairs.name=White Sandstone Stairs
tile.willow_fence.name=Willow Fence
tile.willow_fence_gate.name=Willow Fence Gate
tile.willow_wood_slab.name=Willow Wood Slab

View File

@ -0,0 +1,8 @@
{
"parent": "block/half_slab",
"textures": {
"bottom": "biomesoplenty:blocks/white_sandstone_bottom",
"top": "biomesoplenty:blocks/white_sandstone_top",
"side": "biomesoplenty:blocks/white_sandstone_normal"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "block/upper_slab",
"textures": {
"bottom": "biomesoplenty:blocks/white_sandstone_bottom",
"top": "biomesoplenty:blocks/white_sandstone_top",
"side": "biomesoplenty:blocks/white_sandstone_normal"
}
}

View File

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

View File

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

View File

@ -0,0 +1,7 @@
{
"parent": "block/cube_column",
"textures": {
"end": "biomesoplenty:blocks/white_sandstone_top",
"side": "biomesoplenty:blocks/white_sandstone_carved"
}
}

View File

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

View File

@ -0,0 +1,8 @@
{
"parent": "block/cube_bottom_top",
"textures": {
"bottom": "biomesoplenty:blocks/white_sandstone_bottom",
"top": "biomesoplenty:blocks/white_sandstone_top",
"side": "biomesoplenty:blocks/white_sandstone_normal"
}
}

View File

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

View File

@ -0,0 +1,7 @@
{
"parent": "block/cube_column",
"textures": {
"end": "biomesoplenty:blocks/white_sandstone_top",
"side": "biomesoplenty:blocks/white_sandstone_smooth"
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 662 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 517 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B