updates with piston bellows

This commit is contained in:
Mohammad-Ali Minaie
2017-01-03 13:50:39 -05:00
parent 19c9dcfb9e
commit fbab5ec849
32 changed files with 836 additions and 2028 deletions

Binary file not shown.

View File

@@ -7,6 +7,7 @@ import net.minecraftforge.fml.client.config.GuiConfigEntries;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import nmd.primal.forgecraft.blocks.PistonBellows;
import nmd.primal.forgecraft.init.ModBlocks;
import nmd.primal.forgecraft.init.ModItems;
//import nmd.primal.forgecraft.Item.ModItems;
@@ -51,7 +52,8 @@ public class ModInfo {
}
public enum ForgecraftBlocks {
FIREBOX("firebox", "firebox");
FIREBOX("firebox", "firebox"),
PISTONBELLOWS("pistonbellows", "pistonbellows");
private String unlocalizedName;
private String registryName;

View File

@@ -0,0 +1,26 @@
package nmd.primal.forgecraft.blocks;
import net.minecraft.block.Block;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.util.EnumFacing;
/**
* Created by mminaie on 1/1/17.
*/
public abstract class CustomFacing extends Block {
public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL);
protected CustomFacing(Material material)
{
super(material);
}
protected CustomFacing(Material material, MapColor color)
{
super(material, color);
}
}

View File

@@ -0,0 +1,197 @@
package nmd.primal.forgecraft.blocks;
import net.minecraft.block.BlockHorizontal;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.tiles.TileFirebox;
import javax.annotation.Nullable;
/**
* Created by mminaie on 1/1/17.
*/
public class PistonBellows extends CustomFacing {
//public static final PropertyBool ACTIVE = PropertyBool.create("active");
//protected static final AxisAlignedBB collideBox = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.99D, 1.0D);
protected static final AxisAlignedBB boundBox = new AxisAlignedBB(0.1875D, 0.0D, 0.0D, 1.0D, 12 / 16D, 1.0D);
public PistonBellows(Material material) {
super(material);
setUnlocalizedName(ModInfo.ForgecraftBlocks.PISTONBELLOWS.getUnlocalizedName());
setRegistryName(ModInfo.ForgecraftBlocks.PISTONBELLOWS.getRegistryName());
setCreativeTab(ModInfo.TAB_FORGECRAFT);
setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
setHardness(3.0f);
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
if(!world.isRemote){
System.out.println(facing);
if(facing == EnumFacing.NORTH){
BlockPos tempPos = new BlockPos(pos.getX()-1, pos.getY(), pos.getZ());
TileFirebox tile = (TileFirebox) world.getTileEntity(tempPos);
if(tile != null){
tile.setHeat(tile.getHeat() + 25);
}
System.out.println(world.getBlockState(tempPos).getBlock());
}
if(facing == EnumFacing.SOUTH){
BlockPos tempPos = new BlockPos(pos.getX()+1, pos.getY(), pos.getZ());
System.out.println(world.getBlockState(tempPos).getBlock());
}
}
return true;
}
@Override
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
{
worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing()), 2);
}
//@Override
//public TileEntity createNewTileEntity(World worldIn, int meta)
//{
//return new TilePistonBellows();
//}
@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
{
return boundBox;
}
@Override
public void breakBlock(World world, BlockPos pos, IBlockState state)
{
/*if (!world.isRemote && world.getGameRules().getBoolean("doTileDrops"))
{
TilePistonBellows tile = (TilePistonBellows) world.getTileEntity(pos);
if (tile !=null)
{
for (ItemStack stack : tile.getSlotList())
{
if (stack != null) {
float offset = 0.7F;
double offsetX = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D;
double offsetY = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D;
double offsetZ = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D;
EntityItem item = new EntityItem(world, pos.getX() + offsetX, pos.getY() + offsetY, pos.getZ() + offsetZ, stack);
item.setDefaultPickupDelay();
world.spawnEntity(item);
}
}
}
}*/
super.breakBlock(world, pos, state);
}
@Override
public int getMetaFromState(IBlockState state) {
int i = 0;
if( (state.getValue(FACING) == EnumFacing.EAST)){
i = 0;
return i;
}
if( (state.getValue(FACING) == EnumFacing.WEST)){
i = 1;
return i;
}
if( (state.getValue(FACING) == EnumFacing.SOUTH)){
i = 2;
return i;
}
if( (state.getValue(FACING) == EnumFacing.NORTH)){
i = 3;
return i;
}
return i;
}
@Override
public IBlockState getStateFromMeta(int meta) {
EnumFacing enumfacing;
switch (meta & 7)
{
case 0:
enumfacing = EnumFacing.EAST;
break;
case 1:
enumfacing = EnumFacing.WEST;
break;
case 2:
enumfacing = EnumFacing.SOUTH;
break;
case 3:
enumfacing = EnumFacing.NORTH;
break;
default:
enumfacing = EnumFacing.NORTH;
}
return this.getDefaultState().withProperty(FACING, enumfacing);
}
@Override
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[] {FACING});
}
@Override
public boolean isFullCube(IBlockState state)
{
return false;
}
@Override
public boolean isFullyOpaque(IBlockState state)
{
return false;
}
@Override
public boolean isOpaqueCube(IBlockState state)
{
return false;
}
@Override
@SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side)
{
return true;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state)
{
return EnumBlockRenderType.MODEL;
}
}

View File

@@ -8,6 +8,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraftforge.fml.common.registry.GameRegistry;
import nmd.primal.forgecraft.blocks.Firebox;
import nmd.primal.forgecraft.blocks.PistonBellows;
/**
* Created by kitsu on 11/26/2016.
@@ -15,20 +16,22 @@ import nmd.primal.forgecraft.blocks.Firebox;
public class ModBlocks {
public static Block firebox;
public static Block pistonbellows;
public static void init() {
firebox = new Firebox(Material.ROCK);
pistonbellows = new PistonBellows(Material.WOOD);
}
public static void register() {
registerBlock(firebox);
registerBlock(pistonbellows);
}
public static void registerRenders() {
registerRender(firebox);
registerRender(pistonbellows);
}
private static void registerBlock(Block block) {
@@ -38,8 +41,6 @@ public class ModBlocks {
GameRegistry.register(item);
}
private static void registerRender(Block block) {
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), "inventory"));
}

View File

@@ -13,6 +13,9 @@ public class ModTiles {
public static void registerTileEntities () {
registerTileEntity(TileFirebox.class, "firebox");
}
//public static void registerTileEntities () {
// registerTileEntity(TilePistonBellows.class, "pistonbellows");
//}
private static void registerTileEntity(Class<? extends TileEntity> tile_class, String baseName) {
GameRegistry.registerTileEntity(tile_class, "tile.forgecraft." + baseName);

View File

@@ -43,6 +43,7 @@ public class TileFirebox extends TileBaseSlot implements ITickable {
//private ItemStack[] inventory = new ItemStack [0];
//private String customName;
private int iteration = 0;
private int heat;
@Override
public void update () {
@@ -58,6 +59,7 @@ public class TileFirebox extends TileBaseSlot implements ITickable {
if (world.getBlockState(this.getPos()).getValue(Firebox.ACTIVE)) {
if (this.getSlotStack(0) == ItemStack.EMPTY) {
world.setBlockState(this.getPos(), state.withProperty(Firebox.ACTIVE, false), 2);
this.markDirty();
world.notifyBlockUpdate(pos, state, state, 2);
}
@@ -87,16 +89,54 @@ public class TileFirebox extends TileBaseSlot implements ITickable {
}
}
}
this.heatManager(this.getHeat(), state, this.getSlotStack(0));
}
}
}
public int getHeat(){
return this.heat;
}
public void setHeat(int newHeat){
this.heat = newHeat;
}
@Override
public int getSlotLimit() {
return 1;
}
private void heatManager(Integer h, IBlockState state, ItemStack stack){
if(state.getValue(Firebox.ACTIVE) == true){
if(!stack.isEmpty()) {
if(h > 400) {
this.setHeat(h - 25);
}
if(h < 400){
this.setHeat(400);
}
}
if(stack.isEmpty()){
if(h > 50){
this.setHeat(h - 25);
if(this.getHeat() < 50){
this.setHeat(50);
}
}
}
}
if(state.getValue(Firebox.ACTIVE) == false){
if(h > 50){
this.setHeat(h - 50);
if(this.getHeat() < 50){
this.setHeat(50);
}
}
}
this.updateBlock();
this.markDirty();
}
public ItemStack removeStackFromSlot(int index) {
ItemStack stack = this.getSlotStack(index);
this.setSlotStack(index, ItemStack.EMPTY);

View File

@@ -0,0 +1,8 @@
{
"variants": {
"facing=north": { "model": "forgecraft:pistonbellows" },
"facing=east": { "model": "forgecraft:pistonbellows", "y": 90 },
"facing=south": { "model": "forgecraft:pistonbellows", "y": 180 },
"facing=west": { "model": "forgecraft:pistonbellows", "y": 270 }
}
}

View File

@@ -0,0 +1,270 @@
{
"__comment": "Designed by Kitsushadow with Cubik Studio - https://cubik.studio",
"textures": {
"particle": "forgecraft:blocks/checker_test",
"texture_test": "forgecraft:blocks/checker_test",
"texture": "blocks/planks_oak"
},
"elements": [
{
"__comment": "wall4",
"from": [ 3, 0, 0 ],
"to": [ 13, 1, 14 ],
"faces": {
"down": { "uv": [ 3, 2, 13, 16 ], "texture": "#texture" },
"up": { "uv": [ 3, 0, 13, 14 ], "texture": "#texture" },
"north": { "uv": [ 3, 15, 13, 16 ], "texture": "#texture" },
"south": { "uv": [ 3, 15, 13, 16 ], "texture": "#texture" },
"west": { "uv": [ 0, 15, 14, 16 ], "texture": "#texture" },
"east": { "uv": [ 2, 15, 16, 16 ], "texture": "#texture" }
}
},
{
"__comment": "wall_flap2",
"from": [ 3, 1, 0 ],
"to": [ 13, 11, 1 ],
"faces": {
"down": { "uv": [ 3, 15, 13, 16 ], "texture": "#texture" },
"up": { "uv": [ 3, 0, 13, 1 ], "texture": "#texture" },
"north": { "uv": [ 3, 5, 13, 15 ], "texture": "#texture" },
"south": { "uv": [ 3, 5, 13, 15 ], "texture": "#texture" },
"west": { "uv": [ 0, 5, 1, 15 ], "texture": "#texture" },
"east": { "uv": [ 15, 5, 16, 15 ], "texture": "#texture" }
}
},
{
"__comment": "piston_arm",
"from": [ 7.5, 3, 2 ],
"to": [ 8.5, 4, 15 ],
"faces": {
"down": { "uv": [ 7.5, 1, 8.5, 14 ], "texture": "#texture" },
"up": { "uv": [ 7.5, 2, 8.5, 15 ], "texture": "#texture" },
"north": { "uv": [ 7.5, 12, 8.5, 13 ], "texture": "#texture" },
"south": { "uv": [ 7.5, 12, 8.5, 13 ], "texture": "#texture" },
"west": { "uv": [ 2, 12, 15, 13 ], "texture": "#texture" },
"east": { "uv": [ 1, 12, 14, 13 ], "texture": "#texture" }
}
},
{
"__comment": "piston_arm1",
"from": [ 7.5, 8, 2 ],
"to": [ 8.5, 9, 15 ],
"faces": {
"down": { "uv": [ 7.5, 1, 8.5, 14 ], "texture": "#texture" },
"up": { "uv": [ 7.5, 2, 8.5, 15 ], "texture": "#texture" },
"north": { "uv": [ 7.5, 11, 8.5, 12 ], "texture": "#texture" },
"south": { "uv": [ 7.5, 11, 8.5, 12 ], "texture": "#texture" },
"west": { "uv": [ 2, 11, 15, 12 ], "texture": "#texture" },
"east": { "uv": [ 1, 11, 14, 12 ], "texture": "#texture" }
}
},
{
"__comment": "wall",
"from": [ 3, 3, 13 ],
"to": [ 7.5, 4, 14 ],
"faces": {
"down": { "uv": [ 3, 2, 7.5, 3 ], "texture": "#texture" },
"up": { "uv": [ 3, 13, 7.5, 14 ], "texture": "#texture" },
"north": { "uv": [ 8.5, 12, 13, 13 ], "texture": "#texture" },
"south": { "uv": [ 3, 12, 7.5, 13 ], "texture": "#texture" },
"west": { "uv": [ 13, 12, 14, 13 ], "texture": "#texture" },
"east": { "uv": [ 2, 12, 3, 13 ], "texture": "#texture" }
}
},
{
"__comment": "wall1",
"from": [ 8.5, 3, 13 ],
"to": [ 13, 4, 14 ],
"faces": {
"down": { "uv": [ 3, 2, 7.5, 3 ], "texture": "#texture" },
"up": { "uv": [ 3, 13, 7.5, 14 ], "texture": "#texture" },
"north": { "uv": [ 8, 10, 12.5, 11 ], "texture": "#texture" },
"south": { "uv": [ 2.5, 10, 7, 11 ], "texture": "#texture" },
"west": { "uv": [ 13, 10, 14, 11 ], "texture": "#texture" },
"east": { "uv": [ 2, 10, 3, 11 ], "texture": "#texture" }
}
},
{
"__comment": "wall2",
"from": [ 3, 11, 0 ],
"to": [ 13, 12, 14 ],
"faces": {
"down": { "uv": [ 3, 2, 13, 16 ], "texture": "#texture" },
"up": { "uv": [ 3, 0, 13, 14 ], "texture": "#texture" },
"north": { "uv": [ 3, 4, 13, 5 ], "texture": "#texture" },
"south": { "uv": [ 3, 4, 13, 5 ], "texture": "#texture" },
"west": { "uv": [ 0, 4, 14, 5 ], "texture": "#texture" },
"east": { "uv": [ 2, 4, 16, 5 ], "texture": "#texture" }
}
},
{
"__comment": "wall3",
"from": [ 3, 1, 13 ],
"to": [ 13, 3, 14 ],
"faces": {
"down": { "uv": [ 3, 2, 13, 3 ], "texture": "#texture" },
"up": { "uv": [ 3, 13, 13, 14 ], "texture": "#texture" },
"north": { "uv": [ 3, 13, 13, 15 ], "texture": "#texture" },
"south": { "uv": [ 3, 13, 13, 15 ], "texture": "#texture" },
"west": { "uv": [ 13, 13, 14, 15 ], "texture": "#texture" },
"east": { "uv": [ 2, 13, 3, 15 ], "texture": "#texture" }
}
},
{
"__comment": "wall_flap1",
"from": [ 3, 4, 13 ],
"to": [ 13, 8, 14 ],
"faces": {
"down": { "uv": [ 3, 2, 13, 3 ], "texture": "#texture" },
"up": { "uv": [ 3, 13, 13, 14 ], "texture": "#texture" },
"north": { "uv": [ 3, 8, 13, 12 ], "texture": "#texture" },
"south": { "uv": [ 3, 8, 13, 12 ], "texture": "#texture" },
"west": { "uv": [ 13, 8, 14, 12 ], "texture": "#texture" },
"east": { "uv": [ 2, 8, 3, 12 ], "texture": "#texture" }
}
},
{
"__comment": "wall5",
"from": [ 3, 8, 13 ],
"to": [ 7.5, 9, 14 ],
"faces": {
"down": { "uv": [ 3, 2, 7.5, 3 ], "texture": "#texture" },
"up": { "uv": [ 3, 13, 7.5, 14 ], "texture": "#texture" },
"north": { "uv": [ 8.5, 12, 13, 13 ], "texture": "#texture" },
"south": { "uv": [ 2, 12, 6.5, 13 ], "texture": "#texture" },
"west": { "uv": [ 13, 12, 14, 13 ], "texture": "#texture" },
"east": { "uv": [ 2, 12, 3, 13 ], "texture": "#texture" }
}
},
{
"__comment": "wall6",
"from": [ 8.5, 8, 13 ],
"to": [ 13, 9, 14 ],
"faces": {
"down": { "uv": [ 3, 2, 7.5, 3 ], "texture": "#texture" },
"up": { "uv": [ 3, 13, 7.5, 14 ], "texture": "#texture" },
"north": { "uv": [ 8.5, 12, 13, 13 ], "texture": "#texture" },
"south": { "uv": [ 2, 12, 6.5, 13 ], "texture": "#texture" },
"west": { "uv": [ 13, 12, 14, 13 ], "texture": "#texture" },
"east": { "uv": [ 2, 12, 3, 13 ], "texture": "#texture" }
}
},
{
"__comment": "wall7",
"from": [ 3, 9, 13 ],
"to": [ 13, 11, 14 ],
"faces": {
"down": { "uv": [ 3, 2, 13, 3 ], "texture": "#texture" },
"up": { "uv": [ 3, 13, 13, 14 ], "texture": "#texture" },
"north": { "uv": [ 3, 13, 13, 15 ], "texture": "#texture" },
"south": { "uv": [ 3, 13, 13, 15 ], "texture": "#texture" },
"west": { "uv": [ 13, 13, 14, 15 ], "texture": "#texture" },
"east": { "uv": [ 2, 13, 3, 15 ], "texture": "#texture" }
}
},
{
"__comment": "piston_arm2",
"from": [ 7.5, 2, 15 ],
"to": [ 8.5, 10, 16 ],
"faces": {
"down": { "uv": [ 7.5, 0, 8.5, 1 ], "texture": "#texture" },
"up": { "uv": [ 7.5, 15, 8.5, 16 ], "texture": "#texture" },
"north": { "uv": [ 7.5, 6, 8.5, 14 ], "texture": "#texture" },
"south": { "uv": [ 7.5, 6, 8.5, 14 ], "texture": "#texture" },
"west": { "uv": [ 15, 6, 16, 14 ], "texture": "#texture" },
"east": { "uv": [ 0, 6, 1, 14 ], "texture": "#texture" }
}
},
{
"__comment": "wall8",
"from": [ 3, 1, 1 ],
"to": [ 4, 11, 13 ],
"faces": {
"down": { "uv": [ 3, 3, 4, 15 ], "texture": "#texture" },
"up": { "uv": [ 3, 1, 4, 13 ], "texture": "#texture" },
"north": { "uv": [ 12, 5, 13, 15 ], "texture": "#texture" },
"south": { "uv": [ 3, 5, 4, 15 ], "texture": "#texture" },
"west": { "uv": [ 1, 5, 13, 15 ], "texture": "#texture" },
"east": { "uv": [ 3, 5, 15, 15 ], "texture": "#texture" }
}
},
{
"__comment": "wall9",
"from": [ 12, 1, 1 ],
"to": [ 13, 11, 13 ],
"faces": {
"down": { "uv": [ 3, 3, 4, 15 ], "texture": "#texture" },
"up": { "uv": [ 3, 1, 4, 13 ], "texture": "#texture" },
"north": { "uv": [ 12, 5, 13, 15 ], "texture": "#texture" },
"south": { "uv": [ 3, 5, 4, 15 ], "texture": "#texture" },
"west": { "uv": [ 1, 5, 13, 15 ], "texture": "#texture" },
"east": { "uv": [ 3, 5, 15, 15 ], "texture": "#texture" }
}
},
{
"__comment": "outlet",
"from": [ 15, 1, 5 ],
"to": [ 16, 8, 11 ],
"faces": {
"down": { "uv": [ 15, 5, 16, 11 ], "texture": "#texture" },
"up": { "uv": [ 15, 5, 16, 11 ], "texture": "#texture" },
"north": { "uv": [ 0, 8, 1, 15 ], "texture": "#texture" },
"south": { "uv": [ 15, 8, 16, 15 ], "texture": "#texture" },
"west": { "uv": [ 5, 8, 11, 15 ], "texture": "#texture" },
"east": { "uv": [ 5, 8, 11, 15 ], "texture": "#texture" }
}
},
{
"__comment": "outlet1",
"from": [ 13, 0, 4 ],
"to": [ 16, 1, 12 ],
"faces": {
"down": { "uv": [ 13, 4, 16, 12 ], "texture": "#texture" },
"up": { "uv": [ 13, 4, 16, 12 ], "texture": "#texture" },
"north": { "uv": [ 0, 15, 3, 16 ], "texture": "#texture" },
"south": { "uv": [ 13, 15, 16, 16 ], "texture": "#texture" },
"west": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" },
"east": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" }
}
},
{
"__comment": "outlet2",
"from": [ 13, 11, 4 ],
"to": [ 16, 12, 12 ],
"faces": {
"down": { "uv": [ 13, 4, 16, 12 ], "texture": "#texture" },
"up": { "uv": [ 13, 4, 16, 12 ], "texture": "#texture" },
"north": { "uv": [ 0, 4, 3, 5 ], "texture": "#texture" },
"south": { "uv": [ 13, 4, 16, 5 ], "texture": "#texture" },
"west": { "uv": [ 4, 4, 12, 5 ], "texture": "#texture" },
"east": { "uv": [ 4, 4, 12, 5 ], "texture": "#texture" }
}
},
{
"__comment": "outlet3",
"from": [ 13, 1, 11 ],
"to": [ 16, 11, 12 ],
"faces": {
"down": { "uv": [ 13, 4, 16, 5 ], "texture": "#texture" },
"up": { "uv": [ 13, 11, 16, 12 ], "texture": "#texture" },
"north": { "uv": [ 0, 5, 3, 15 ], "texture": "#texture" },
"south": { "uv": [ 13, 5, 16, 15 ], "texture": "#texture" },
"west": { "uv": [ 11, 5, 12, 15 ], "texture": "#texture" },
"east": { "uv": [ 4, 5, 5, 15 ], "texture": "#texture" }
}
},
{
"__comment": "outlet4",
"from": [ 13, 1, 4 ],
"to": [ 16, 11, 5 ],
"faces": {
"down": { "uv": [ 13, 4, 16, 5 ], "texture": "#texture" },
"up": { "uv": [ 13, 11, 16, 12 ], "texture": "#texture" },
"north": { "uv": [ 0, 5, 3, 15 ], "texture": "#texture" },
"south": { "uv": [ 13, 5, 16, 15 ], "texture": "#texture" },
"west": { "uv": [ 11, 5, 12, 15 ], "texture": "#texture" },
"east": { "uv": [ 4, 5, 5, 15 ], "texture": "#texture" }
}
}
]
}