Add BOP stone and mud brick slabs

This commit is contained in:
Cheeserolls 2015-05-23 15:33:45 +01:00
parent f219f84c09
commit 4b6e4effc7
33 changed files with 540 additions and 16 deletions

View file

@ -119,6 +119,8 @@ public class BOPBlocks
public static Block crag_rock;
public static Block mud_brick_block;
public static Block crystal;
public static Block other_slab;
public static Block double_other_slab;
public static Block flower_vine;
public static Block ivy;

View file

@ -45,6 +45,7 @@ public class BOPItems
public static Item pixie_dust;
public static Item ichor;
public static Item pinecone;
public static Item other_slab;
public static Item dart;
public static Item dart_blower;

View file

@ -0,0 +1,36 @@
/*******************************************************************************
* Copyright 2014, 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 net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState;
public class BlockBOPDoubleOtherSlab extends BlockBOPHalfOtherSlab
{
@Override
public IProperty[] getNonRenderingProperties() { return new IProperty[] { HALF }; }
@Override
public String getStateName(IBlockState state)
{
return "double_" + ((SlabType) state.getValue(VARIANT)).getName() + "_slab";
}
public BlockBOPDoubleOtherSlab()
{
super();
}
@Override
public boolean isDouble() {
return true;
}
}

View file

@ -0,0 +1,215 @@
/*******************************************************************************
* Copyright 2014, 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.List;
import com.google.common.collect.ImmutableSet;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.common.util.block.BlockStateUtils;
import net.minecraft.block.BlockSlab;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IStringSerializable;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class BlockBOPHalfOtherSlab extends BlockSlab implements IBOPBlock
{
// add properties
public static enum SlabType implements IStringSerializable
{
LIMESTONE, SILTSTONE, SHALE, POLISHED_LIMESTONE, POLISHED_SILTSTONE, POLISHED_SHALE, CRAG_ROCK, MUD_BRICK;
@Override
public String getName()
{
return this.name().toLowerCase();
}
@Override
public String toString()
{
return this.getName();
}
// get this slab's corresponding full block blockstate
public IBlockState fullBlockState()
{
IBlockState state = null;
switch (this)
{
case LIMESTONE:
state = BOPBlocks.stone.getDefaultState().withProperty(BlockBOPStone.POLISHED, Boolean.valueOf(false)).withProperty(BlockBOPStone.VARIANT, BlockBOPStone.StoneType.LIMESTONE);
break;
case SILTSTONE:
state = BOPBlocks.stone.getDefaultState().withProperty(BlockBOPStone.POLISHED, Boolean.valueOf(false)).withProperty(BlockBOPStone.VARIANT, BlockBOPStone.StoneType.SILTSTONE);
break;
case SHALE:
state = BOPBlocks.stone.getDefaultState().withProperty(BlockBOPStone.POLISHED, Boolean.valueOf(false)).withProperty(BlockBOPStone.VARIANT, BlockBOPStone.StoneType.SHALE);
break;
case POLISHED_LIMESTONE:
state = BOPBlocks.stone.getDefaultState().withProperty(BlockBOPStone.POLISHED, Boolean.valueOf(true)).withProperty(BlockBOPStone.VARIANT, BlockBOPStone.StoneType.LIMESTONE);
break;
case POLISHED_SILTSTONE:
state = BOPBlocks.stone.getDefaultState().withProperty(BlockBOPStone.POLISHED, Boolean.valueOf(true)).withProperty(BlockBOPStone.VARIANT, BlockBOPStone.StoneType.SILTSTONE);
break;
case POLISHED_SHALE:
state = BOPBlocks.stone.getDefaultState().withProperty(BlockBOPStone.POLISHED, Boolean.valueOf(true)).withProperty(BlockBOPStone.VARIANT, BlockBOPStone.StoneType.SHALE);
break;
case CRAG_ROCK:
state = BOPBlocks.crag_rock.getDefaultState();
break;
case MUD_BRICK:
state = BOPBlocks.mud_brick_block.getDefaultState();
break;
default:
throw new RuntimeException("No full block state defined for SlabType " + this.name());
}
return state;
}
};
// add properties (note we inherit HALF property from parent BlockSlab)
public static final PropertyEnum VARIANT = PropertyEnum.create("variant", SlabType.class);
@Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { HALF, VARIANT });}
// implement IBOPBlock
@Override
public Class<? extends ItemBlock> getItemClass() { return null; }
@Override
public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
@Override
public IProperty[] getPresetProperties() { return new IProperty[] { VARIANT }; }
@Override
public IProperty[] getNonRenderingProperties() { return null; }
@Override
public String getStateName(IBlockState state)
{
return ((SlabType) state.getValue(VARIANT)).getName() + "_slab";
}
public IBlockState getFullBlockVariantState(SlabType type)
{
return type.fullBlockState();
}
public ItemStack getFullBlockVariantItem(SlabType type)
{
return this.getFullBlockVariantItem(type, 1);
}
public ItemStack getFullBlockVariantItem(SlabType type, int howMany)
{
IBlockState state = type.fullBlockState();
return new ItemStack(state.getBlock(), howMany, state.getBlock().damageDropped(state));
}
public ItemStack getVariantItem(SlabType type)
{
return this.getVariantItem(type, 1);
}
public ItemStack getVariantItem(SlabType type, int howMany)
{
IBlockState state = this.getDefaultState().withProperty(VARIANT, type);
return new ItemStack(this, howMany, this.damageDropped(state));
}
public BlockBOPHalfOtherSlab()
{
super(Material.rock);
this.useNeighborBrightness = true;
this.setStepSound(soundTypeStone);
// TODO: should depend on variant really, but that's quite hard to achieve...
this.setHardness(2.0F).setResistance(7.0F);
this.setDefaultState(this.blockState.getBaseState().withProperty(HALF, BlockSlab.EnumBlockHalf.BOTTOM));
}
@Override
public String getHarvestTool(IBlockState state)
{
IBlockState fullBlockState = ((SlabType)state.getValue(VARIANT)).fullBlockState();
return fullBlockState.getBlock().getHarvestTool(fullBlockState);
}
@Override
public int getHarvestLevel(IBlockState state)
{
IBlockState fullBlockState = ((SlabType)state.getValue(VARIANT)).fullBlockState();
return fullBlockState.getBlock().getHarvestLevel(fullBlockState);
}
// these 3 functions are required by BlockSlab for setting up the corresponding ItemSlab
@Override
public String getUnlocalizedName(int meta)
{
return this.getStateName(this.getStateFromMeta(meta));
}
@Override
public IProperty getVariantProperty()
{
return VARIANT;
}
@Override
public Object getVariant(ItemStack stack)
{
return SlabType.values()[stack.getMetadata() & 7];
}
@Override
public IBlockState getStateFromMeta(int meta)
{
return this.getDefaultState().withProperty(VARIANT, SlabType.values()[meta & 7]).withProperty(HALF, (meta & 8) == 0 ? BlockSlab.EnumBlockHalf.BOTTOM : BlockSlab.EnumBlockHalf.TOP);
}
@Override
public int getMetaFromState(IBlockState state)
{
SlabType type = (SlabType)state.getValue(VARIANT);
return (state.getValue(HALF) == BlockSlab.EnumBlockHalf.TOP ? 8 : 0) + type.ordinal();
}
@Override
public int damageDropped(IBlockState state)
{
// always drop a bottom slab
return this.getMetaFromState(state.withProperty(HALF, BlockSlab.EnumBlockHalf.BOTTOM));
}
@Override
public boolean isDouble() {
return false;
}
@Override
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item itemIn, CreativeTabs tab, List list)
{
// get the preset blocks variants
ImmutableSet<IBlockState> presets = BlockStateUtils.getBlockPresets(this);
// register all the sub-blocks
for (IBlockState state : presets)
{
list.add(new ItemStack(itemIn, 1, this.getMetaFromState(state)));
}
}
}

View file

@ -1,3 +1,11 @@
/*******************************************************************************
* Copyright 2014, 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.List;

View file

@ -75,11 +75,19 @@ public class ModBlocks
hard_sand = registerBlock( (new BlockBOPGeneric(Material.sand)).setHardness(0.9F).setStepSound(Block.soundTypeSand), "hard_sand" );
mud_brick_block = registerBlock( (new BlockBOPGeneric()).setResistance(2.0F), "mud_brick_block" );
// stone and brick 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");
GameData.getBlockItemMap().put(other_slab, BOPItems.other_slab);
GameData.getBlockItemMap().put(double_other_slab, BOPItems.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" );
// 16 wood types, 4 per BlockBOPLog instance, needs 4 'pages'
BlockBOPLog.createAllPages();
log_0 = registerBlock( BlockBOPLog.paging.getBlock(0), "log_0" );
@ -90,10 +98,20 @@ public class ModBlocks
// 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();
registerWoodSlab( wood_slab_0, double_wood_slab_0, BOPItems.wood_slab_0, 0);
registerWoodSlab( wood_slab_1, double_wood_slab_1, BOPItems.wood_slab_1, 1);
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");
GameData.getBlockItemMap().put(wood_slab_0, BOPItems.wood_slab_0);
GameData.getBlockItemMap().put(double_wood_slab_0, BOPItems.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");
GameData.getBlockItemMap().put(wood_slab_1, BOPItems.wood_slab_1);
GameData.getBlockItemMap().put(double_wood_slab_1, BOPItems.wood_slab_1);
// 16 wood types, 16 per BlockBOPPlanks instance, needs 1 'pages'
BlockBOPPlanks.createAllPages();
@ -226,17 +244,6 @@ public class ModBlocks
}
// use a separate function for registering slabs because the half slab, double slab, and item really need to be registered together
public static void registerWoodSlab(Block half_slab, Block double_slab, Item slab_item, int pageNum)
{
half_slab = registerBlock( BlockBOPHalfWoodSlab.paging.getBlock(pageNum), "wood_slab_" + pageNum);
double_slab = registerBlock( BlockBOPDoubleWoodSlab.paging.getBlock(pageNum), "double_wood_slab_" + pageNum, null ); // no creative tab for double slab
slab_item = ModItems.registerItem( new ItemSlab(half_slab, (BlockSlab)half_slab, (BlockSlab)double_slab), "wood_slab_" + pageNum );
GameData.getBlockItemMap().put(half_slab, slab_item);
GameData.getBlockItemMap().put(double_slab, slab_item);
}
// use a separate function for registering doors because the door block and item need to be registered together
public static Block registerDoor(BlockBOPDoor door_block, String name, Item door_item)
{

View file

@ -78,10 +78,17 @@ public class ModCrafting
GameRegistry.addShapelessRecipe(new ItemStack(BOPItems.brown_dye), new Object[] {((BlockBOPDoublePlant)BOPBlocks.double_plant).getVariantItem(BlockBOPDoublePlant.DoublePlantType.TALL_CATTAIL)});
/*** Brick stairs and slabs ***/
/*** BOP brick and stone stairs and slabs ***/
for (BlockBOPHalfOtherSlab.SlabType slabType : BlockBOPHalfOtherSlab.SlabType.values())
{
BlockBOPHalfOtherSlab otherSlab = (BlockBOPHalfOtherSlab)BOPBlocks.other_slab;
System.out.println( otherSlab.getVariantItem(slabType, 6) );
System.out.println( otherSlab.getFullBlockVariantItem(slabType) );
GameRegistry.addShapedRecipe(otherSlab.getVariantItem(slabType, 6), new Object[] {"RRR", 'R', otherSlab.getFullBlockVariantItem(slabType)});
}
// TODO: implement these blocks
// GameRegistry.addShapedRecipe(new ItemStack(BOPCBlocks.stoneSingleSlab, 6, 2), new Object[] {"RRR", 'R', BOPCBlocks.mudBricks});
// GameRegistry.addShapedRecipe(new ItemStack(BOPCBlocks.mudBricksStairs, 4), new Object[] {" R", " RR", "RRR", 'R', BOPCBlocks.mudBricks});
// GameRegistry.addShapedRecipe(new ItemStack(BOPCBlocks.mudBricksStairs, 4), new Object[] {"R ", "RR ", "RRR", 'R', BOPCBlocks.mudBricks});

View file

@ -0,0 +1,12 @@
{
"variants": {
"variant=limestone": { "model": "biomesoplenty:limestone" },
"variant=siltstone": { "model": "biomesoplenty:siltstone" },
"variant=shale": { "model": "biomesoplenty:shale" },
"variant=polished_limestone": { "model": "biomesoplenty:polished_limestone" },
"variant=polished_siltstone": { "model": "biomesoplenty:polished_siltstone" },
"variant=polished_shale": { "model": "biomesoplenty:polished_shale" },
"variant=crag_rock": { "model": "biomesoplenty:crag_rock" },
"variant=mud_brick": { "model": "biomesoplenty:mud_brick_block" }
}
}

View file

@ -0,0 +1,20 @@
{
"variants": {
"half=bottom,variant=limestone": { "model": "biomesoplenty:half_slab_limestone" },
"half=top,variant=limestone": { "model": "biomesoplenty:upper_slab_limestone" },
"half=bottom,variant=siltstone": { "model": "biomesoplenty:half_slab_siltstone" },
"half=top,variant=siltstone": { "model": "biomesoplenty:upper_slab_siltstone" },
"half=bottom,variant=shale": { "model": "biomesoplenty:half_slab_shale" },
"half=top,variant=shale": { "model": "biomesoplenty:upper_slab_shale" },
"half=bottom,variant=polished_limestone": { "model": "biomesoplenty:half_slab_polished_limestone" },
"half=top,variant=polished_limestone": { "model": "biomesoplenty:upper_slab_polished_limestone" },
"half=bottom,variant=polished_siltstone": { "model": "biomesoplenty:half_polished_siltstone" },
"half=top,variant=polished_siltstone": { "model": "biomesoplenty:upper_slab_polished_siltstone" },
"half=bottom,variant=polished_shale": { "model": "biomesoplenty:half_slab_polished_shale" },
"half=top,variant=polished_shale": { "model": "biomesoplenty:upper_slab_polished_shale" },
"half=bottom,variant=crag_rock": { "model": "biomesoplenty:half_slab_crag_rock" },
"half=top,variant=crag_rock": { "model": "biomesoplenty:upper_slab_crag_rock" },
"half=bottom,variant=mud_brick": { "model": "biomesoplenty:half_slab_mud_brick" },
"half=top,variant=mud_brick": { "model": "biomesoplenty:upper_slab_mud_brick" }
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,11 @@
{
"parent": "biomesoplenty:block/half_slab_crag_rock",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View file

@ -0,0 +1,11 @@
{
"parent": "biomesoplenty:block/half_slab_limestone",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View file

@ -0,0 +1,11 @@
{
"parent": "biomesoplenty:block/half_slab_mud_brick",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View file

@ -0,0 +1,11 @@
{
"parent": "biomesoplenty:block/half_slab_polished_limestone",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View file

@ -0,0 +1,11 @@
{
"parent": "biomesoplenty:block/half_slab_polished_shale",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View file

@ -0,0 +1,11 @@
{
"parent": "biomesoplenty:block/half_slab_polished_siltstone",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View file

@ -0,0 +1,11 @@
{
"parent": "biomesoplenty:block/half_slab_shale",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View file

@ -0,0 +1,11 @@
{
"parent": "biomesoplenty:block/half_slab_siltstone",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}