Implement the new model for the Blood Tank

- Texture needs some tinkering. Will bother @InsomniaKitten about it
- Minor cleanup and improvements
This commit is contained in:
Nicholas Ignoffo 2016-12-11 23:54:03 -08:00
parent aac2623440
commit b7e2730bcc
8 changed files with 438 additions and 108 deletions

View file

@ -2,14 +2,11 @@ package WayofTime.bloodmagic.block;
import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.block.base.BlockInteger;
import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.client.IVariantProvider;
import WayofTime.bloodmagic.tile.TileBloodTank; import WayofTime.bloodmagic.tile.TileBloodTank;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -20,6 +17,7 @@ import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
@ -31,16 +29,17 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import javax.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class BlockBloodTank extends BlockContainer implements IVariantProvider public class BlockBloodTank extends BlockInteger implements IVariantProvider
{ {
public static final PropertyInteger TIER = PropertyInteger.create("tier", 0, TileBloodTank.capacities.length - 1); public static final AxisAlignedBB BOX = new AxisAlignedBB(0.25, 0, 0.25, 0.75, 0.8, 0.75);
public BlockBloodTank() public BlockBloodTank()
{ {
super(Material.IRON); super(Material.IRON, TileBloodTank.CAPACITIES.length - 1, "tier");
setUnlocalizedName(Constants.Mod.MODID + ".bloodTank"); setUnlocalizedName(Constants.Mod.MODID + ".bloodTank");
setHardness(2.0F); setHardness(2.0F);
@ -49,21 +48,19 @@ public class BlockBloodTank extends BlockContainer implements IVariantProvider
setHarvestLevel("pickaxe", 1); setHarvestLevel("pickaxe", 1);
setCreativeTab(BloodMagic.tabBloodMagic); setCreativeTab(BloodMagic.tabBloodMagic);
setLightOpacity(0); setLightOpacity(0);
setDefaultState(blockState.getBaseState().withProperty(TIER, 0));
} }
// This is important!!! - DON'T DELETE - idk why @Nullable
@Override @Override
public TileEntity createTileEntity(World worldIn, IBlockState blockState) public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World worldIn, BlockPos pos)
{ {
return new TileBloodTank(getMetaFromState(blockState)); return BOX;
} }
@Override @Override
public TileEntity createNewTileEntity(World worldIn, int meta) public AxisAlignedBB getSelectedBoundingBox(IBlockState state, World worldIn, BlockPos pos)
{ {
return new TileBloodTank(meta); return BOX;
} }
@Override @Override
@ -76,7 +73,7 @@ public class BlockBloodTank extends BlockContainer implements IVariantProvider
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public BlockRenderLayer getBlockLayer() public BlockRenderLayer getBlockLayer()
{ {
return BlockRenderLayer.TRANSLUCENT; return BlockRenderLayer.CUTOUT_MIPPED;
} }
@Override @Override
@ -91,32 +88,6 @@ public class BlockBloodTank extends BlockContainer implements IVariantProvider
return false; return false;
} }
@Override
public IBlockState getStateFromMeta(int meta)
{
return this.getDefaultState().withProperty(TIER, meta);
}
@Override
public int getMetaFromState(IBlockState state)
{
return state.getValue(TIER);
}
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos)
{
if (world.getTileEntity(pos) == null)
return state;
return state.withProperty(TIER, world.getTileEntity(pos).getBlockMetadata());
}
@Override
protected BlockStateContainer createBlockState()
{
return new BlockStateContainer(this, new IProperty[] { TIER });
}
@Override @Override
public boolean onBlockActivated(World world, BlockPos blockPos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) public boolean onBlockActivated(World world, BlockPos blockPos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ)
{ {
@ -129,7 +100,7 @@ public class BlockBloodTank extends BlockContainer implements IVariantProvider
return true; return true;
} }
return false; return true;
} }
@Override @Override
@ -141,13 +112,14 @@ public class BlockBloodTank extends BlockContainer implements IVariantProvider
} }
@Override @Override
public List<ItemStack> getDrops(IBlockAccess world, BlockPos blockPos, IBlockState blockState, int fortune) public List<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState blockState, int fortune)
{ {
ArrayList<ItemStack> list = new ArrayList<ItemStack>(); ArrayList<ItemStack> list = new ArrayList<ItemStack>();
if (world.getTileEntity(blockPos) instanceof TileBloodTank) TileEntity tile = world.getTileEntity(pos);
if (tile instanceof TileBloodTank)
{ {
TileBloodTank bloodTank = (TileBloodTank) world.getTileEntity(blockPos); TileBloodTank bloodTank = (TileBloodTank) tile;
ItemStack drop = new ItemStack(this); ItemStack drop = new ItemStack(this);
NBTTagCompound tag = new NBTTagCompound(); NBTTagCompound tag = new NBTTagCompound();
bloodTank.serialize(tag); bloodTank.serialize(tag);
@ -160,21 +132,22 @@ public class BlockBloodTank extends BlockContainer implements IVariantProvider
} }
@Override @Override
public void onBlockPlacedBy(World world, BlockPos blockPos, IBlockState blockState, EntityLivingBase placer, ItemStack stack) public void onBlockPlacedBy(World world, BlockPos pos, IBlockState blockState, EntityLivingBase placer, ItemStack stack)
{ {
if (world.getTileEntity(blockPos) != null && world.getTileEntity(blockPos) instanceof TileBloodTank) TileEntity tile = world.getTileEntity(pos);
if (tile instanceof TileBloodTank)
{ {
NBTTagCompound tag = stack.getTagCompound(); NBTTagCompound tag = stack.getTagCompound();
if (tag != null) if (tag != null)
{ {
((TileBloodTank) world.getTileEntity(blockPos)).deserialize(tag); ((TileBloodTank) tile).deserialize(tag);
blockState.withProperty(TIER, stack.getMetadata()); blockState.withProperty(getProperty(), stack.getMetadata());
} }
} }
world.checkLight(blockPos); world.checkLight(pos);
world.updateComparatorOutputLevel(blockPos, this); world.updateComparatorOutputLevel(pos, this);
world.markAndNotifyBlock(blockPos, world.getChunkFromBlockCoords(blockPos), blockState, blockState, 3); world.markAndNotifyBlock(pos, world.getChunkFromBlockCoords(pos), blockState, blockState, 3);
} }
@Override @Override
@ -193,7 +166,7 @@ public class BlockBloodTank extends BlockContainer implements IVariantProvider
@Override @Override
public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player)
{ {
return getDrops(world, pos, world.getBlockState(pos), 0).get(0); return new ItemStack(this, 1, getMetaFromState(state));
} }
@Override @Override
@ -203,19 +176,33 @@ public class BlockBloodTank extends BlockContainer implements IVariantProvider
} }
@Override @Override
public int getComparatorInputOverride(IBlockState state, World w, BlockPos pos) public int getComparatorInputOverride(IBlockState state, World world, BlockPos pos)
{ {
TileEntity tile = w.getTileEntity(pos); TileEntity tile = world.getTileEntity(pos);
if (tile instanceof TileBloodTank) if (tile instanceof TileBloodTank)
return ((TileBloodTank) tile).getComparatorOutput(); return ((TileBloodTank) tile).getComparatorOutput();
return 0; return 0;
} }
@Override
public TileEntity createTileEntity(World worldIn, IBlockState blockState)
{
return new TileBloodTank(getMetaFromState(blockState));
}
@Override
public boolean hasTileEntity(IBlockState state)
{
return true;
}
// IVariantProvider
@Override @Override
public List<Pair<Integer, String>> getVariants() public List<Pair<Integer, String>> getVariants()
{ {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>(); List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
for (int i = 0; i < TileBloodTank.capacities.length; i++) for (int i = 0; i < TileBloodTank.CAPACITIES.length; i++)
ret.add(new ImmutablePair<Integer, String>(i, "inventory")); ret.add(new ImmutablePair<Integer, String>(i, "inventory"));
return ret; return ret;

View file

@ -39,8 +39,10 @@ public class RenderBloodTank extends TileEntitySpecialRenderer<TileBloodTank>
GlStateManager.popMatrix(); GlStateManager.popMatrix();
} }
public void renderFluid(float scale, Fluid renderFluid, double x, double y, double z) public void renderFluid(float maxHeight, Fluid renderFluid, double x, double y, double z)
{ {
maxHeight = maxHeight * 0.575F;
GlStateManager.translate(x, y, z); GlStateManager.translate(x, y, z);
RenderHelper.disableStandardItemLighting(); RenderHelper.disableStandardItemLighting();
@ -69,56 +71,40 @@ public class RenderBloodTank extends TileEntitySpecialRenderer<TileBloodTank>
float u2 = fluid.getMaxU(); float u2 = fluid.getMaxU();
float v2 = fluid.getMaxV(); float v2 = fluid.getMaxV();
if (scale > 0) if (maxHeight > 0) {
{ float texWidth = u2 - u1;
float edge = 0.9375F;
float otherEdge = 0.0625F;
float offset = 0.002F;
// Top // TOP
buffer.pos(0, scale - offset, 0).tex(u1, v1).color(rColor, gColor, bColor, aColor).endVertex(); buffer.pos(0.25, maxHeight + 0.05, 0.25).tex(u1 + 0.75 * texWidth, v1 + (maxHeight + 0.05) * texWidth).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(0, scale - offset, 1).tex(u1, v2).color(rColor, gColor, bColor, aColor).endVertex(); buffer.pos(0.25, maxHeight + 0.05, 0.75).tex(u1 + 0.75 * texWidth, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(1, scale - offset, 1).tex(u2, v2).color(rColor, gColor, bColor, aColor).endVertex(); buffer.pos(0.75, maxHeight + 0.05, 0.75).tex(u1 + 0.25 * texWidth, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(1, scale - offset, 0).tex(u2, v1).color(rColor, gColor, bColor, aColor).endVertex(); buffer.pos(0.75, maxHeight + 0.05, 0.25).tex(u1 + 0.25 * texWidth, v1 + (maxHeight + 0.05) * texWidth).color(rColor, gColor, bColor, aColor).endVertex();
// Bottom // NORTH
buffer.pos(1, offset, 0).tex(u1, v1).color(rColor, gColor, bColor, aColor).endVertex(); buffer.pos(0.75, maxHeight + 0.05, 0.25).tex(u1 + 0.75 * texWidth, v1 + (maxHeight + 0.05) * texWidth).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(1, offset, 1).tex(u1, v2).color(rColor, gColor, bColor, aColor).endVertex(); buffer.pos(0.75, 0, 0.25).tex(u1 + 0.75 * texWidth, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(0, offset, 1).tex(u2, v2).color(rColor, gColor, bColor, aColor).endVertex(); buffer.pos(0.25, 0, 0.25).tex(u1 + 0.25 * texWidth, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(0, offset, 0).tex(u2, v1).color(rColor, gColor, bColor, aColor).endVertex(); buffer.pos(0.25, maxHeight + 0.05, 0.25).tex(u1 + 0.25 * texWidth, v1 + (maxHeight + 0.05) * texWidth).color(rColor, gColor, bColor, aColor).endVertex();
if (scale > otherEdge) // EAST
{ buffer.pos(0.25, 0, 0.75).tex(u1 + 0.75 * texWidth, v1 + (maxHeight + 0.05) * texWidth).color(rColor, gColor, bColor, aColor).endVertex();
if (scale > edge) buffer.pos(0.25, maxHeight + 0.05, 0.75).tex(u1 + 0.75 * texWidth, v1).color(rColor, gColor, bColor, aColor).endVertex();
scale = edge; buffer.pos(0.25, maxHeight + 0.05, 0.25).tex(u1 + 0.25 * texWidth, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(0.25, 0, 0.25).tex(u1 + 0.25 * texWidth, v1 + (maxHeight + 0.05) * texWidth).color(rColor, gColor, bColor, aColor).endVertex();
v2 -= (fluid.getMaxV() - fluid.getMinV()) * (1 - scale); // SOUTH
buffer.pos(0.75, 0, 0.75).tex(u1 + 0.75 * texWidth, v1 + (maxHeight + 0.05) * texWidth).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(0.75, maxHeight + 0.05, 0.75).tex(u1 + 0.75 * texWidth, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(0.25, maxHeight + 0.05, 0.75).tex(u1 + 0.25 * texWidth, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(0.25, 0, 0.75).tex(u1 + 0.25 * texWidth, v1 + (maxHeight + 0.05) * texWidth).color(rColor, gColor, bColor, aColor).endVertex();
//NORTH // WEST
buffer.pos(1, scale, offset).tex(u1, v1).color(rColor, gColor, bColor, aColor).endVertex(); buffer.pos(0.75, maxHeight + 0.05, 0.75).tex(u1 + 0.75 * texWidth, v1 + (maxHeight + 0.05) * texWidth).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(1, 0, offset).tex(u1, v2).color(rColor, gColor, bColor, aColor).endVertex(); buffer.pos(0.75, 0, 0.75).tex(u1 + 0.75 * texWidth, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(0, 0, offset).tex(u2, v2).color(rColor, gColor, bColor, aColor).endVertex(); buffer.pos(0.75, 0, 0.25).tex(u1 + 0.25 * texWidth, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(0, scale, offset).tex(u2, v1).color(rColor, gColor, bColor, aColor).endVertex(); buffer.pos(0.75, maxHeight + 0.05, 0.25).tex(u1 + 0.25 * texWidth, v1 + (maxHeight + 0.05) * texWidth).color(rColor, gColor, bColor, aColor).endVertex();
//EAST
buffer.pos(offset, 0, 1).tex(u1, v2).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(offset, scale, 1).tex(u1, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(offset, scale, 0).tex(u2, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(offset, 0, 0).tex(u2, v2).color(rColor, gColor, bColor, aColor).endVertex();
//SOUTH
buffer.pos(1, 0, 1 - offset).tex(u1, v2).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(1, scale, 1 - offset).tex(u1, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(0, scale, 1 - offset).tex(u2, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(0, 0, 1 - offset).tex(u2, v2).color(rColor, gColor, bColor, aColor).endVertex();
//WEST
buffer.pos(1 - offset, scale, 1).tex(u1, v1).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(1 - offset, 0, 1).tex(u1, v2).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(1 - offset, 0, 0).tex(u2, v2).color(rColor, gColor, bColor, aColor).endVertex();
buffer.pos(1 - offset, scale, 0).tex(u2, v1).color(rColor, gColor, bColor, aColor).endVertex();
}
} }
tessellator.draw(); tessellator.draw();
RenderHelper.enableStandardItemLighting(); RenderHelper.enableStandardItemLighting();

View file

@ -71,7 +71,7 @@ public class BakedCustomItemModel implements IPerspectiveAwareModel
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
FluidStack fluid = null; FluidStack fluid = null;
float capacity = TileBloodTank.capacities[stack.getItemDamage()] * Fluid.BUCKET_VOLUME; float capacity = TileBloodTank.CAPACITIES[stack.getItemDamage()] * Fluid.BUCKET_VOLUME;
int amount = 0; int amount = 0;
if (stack.hasTagCompound() && stack.getTagCompound().hasKey(Constants.NBT.TANK)) if (stack.hasTagCompound() && stack.getTagCompound().hasKey(Constants.NBT.TANK))
{ {

View file

@ -70,7 +70,7 @@ public class ItemBlockBloodTank extends ItemBlock implements IFluidContainerItem
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list) public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list)
{ {
for (int i = 0; i < TileBloodTank.capacities.length; i++) for (int i = 0; i < TileBloodTank.CAPACITIES.length; i++)
list.add(new ItemStack(id, 1, i)); list.add(new ItemStack(id, 1, i));
} }
@ -89,7 +89,7 @@ public class ItemBlockBloodTank extends ItemBlock implements IFluidContainerItem
@Override @Override
public int getCapacity(ItemStack container) public int getCapacity(ItemStack container)
{ {
return container != null && Block.getBlockFromItem(container.getItem()) instanceof BlockBloodTank ? TileBloodTank.capacities[container.getMetadata()] * Fluid.BUCKET_VOLUME : 0; return container != null && Block.getBlockFromItem(container.getItem()) instanceof BlockBloodTank ? TileBloodTank.CAPACITIES[container.getMetadata()] * Fluid.BUCKET_VOLUME : 0;
} }
@Override @Override

View file

@ -14,17 +14,17 @@ public class TileBloodTank extends TileBase
public int capacity; public int capacity;
protected FluidTank tank; protected FluidTank tank;
public static int[] capacities = { 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65336, 131072, 262144, 524288 }; public static final int[] CAPACITIES = { 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65336, 131072, 262144, 524288 };
public TileBloodTank(int meta) public TileBloodTank(int meta)
{ {
capacity = capacities[meta] * Fluid.BUCKET_VOLUME; capacity = CAPACITIES[meta] * Fluid.BUCKET_VOLUME;
tank = new FluidTank(capacity); tank = new FluidTank(capacity);
} }
public TileBloodTank() public TileBloodTank()
{ {
capacity = capacities[0] * Fluid.BUCKET_VOLUME; capacity = CAPACITIES[0] * Fluid.BUCKET_VOLUME;
tank = new FluidTank(capacity); tank = new FluidTank(capacity);
} }

View file

@ -2,7 +2,7 @@
"forge_marker": 1, "forge_marker": 1,
"defaults": { "defaults": {
"textures": { "all": "bloodmagic:blocks/BloodTank" }, "textures": { "all": "bloodmagic:blocks/BloodTank" },
"model": "cube_all", "model": "bloodmagic:BlockBloodTank",
"uvlock": true "uvlock": true
}, },
"variants": { "variants": {

View file

@ -0,0 +1,357 @@
{
"__comment": "Copyright © InsomniaKitten 2016",
"textures": {
"texture": "bloodmagic:blocks/BloodTank"
},
"elements": [
{
"from": [ 3, 0, 3 ],
"to": [ 13, 1, 13 ],
"faces": {
"down": { "uv": [ 5, 0, 10, 5 ], "texture": "#texture", "cullface": "down" },
"up": { "uv": [ 5, 0, 10, 5 ], "texture": "#texture" },
"north": { "uv": [ 0, 6.5, 5, 7 ], "texture": "#texture" },
"south": { "uv": [ 0, 6.5, 5, 7 ], "texture": "#texture" },
"west": { "uv": [ 0, 6.5, 5, 7 ], "texture": "#texture" },
"east": { "uv": [ 0, 6.5, 5, 7 ], "texture": "#texture" }
}
},
{
"from": [ 3, 1, 3 ],
"to": [ 4, 14, 4 ],
"faces": {
"up": { "uv": [ 4.5, 11.5, 5, 12 ], "texture": "#texture" },
"north": { "uv": [ 0, 0, 0.5, 6.5 ], "texture": "#texture" },
"west": { "uv": [ 0, 0, 0.5, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 3, 1, 4 ],
"to": [ 4, 14, 5 ],
"faces": {
"up": { "uv": [ 4.5, 11, 5, 11.5 ], "texture": "#texture" },
"south": { "uv": [ 4, 0, 4.5, 6.5 ], "texture": "#texture" },
"west": { "uv": [ 0.5, 0, 1, 6.5 ], "texture": "#texture" },
"east": { "uv": [ 4, 0, 4.5, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 3, 1, 5 ],
"to": [ 4, 2, 11 ],
"faces": {
"up": { "uv": [ 0.5, 1.5, 1, 4.5 ], "texture": "#texture" },
"west": { "uv": [ 1, 6, 4, 6.5 ], "texture": "#texture" },
"east": { "uv": [ 1, 6, 4, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 3, 1, 11 ],
"to": [ 4, 14, 12 ],
"faces": {
"up": { "uv": [ 4.5, 7.5, 5, 8 ], "texture": "#texture" },
"north": { "uv": [ 0.5, 0, 1, 6.5 ], "texture": "#texture" },
"west": { "uv": [ 0.5, 0, 1, 6.5 ], "texture": "#texture" },
"east": { "uv": [ 4, 0, 4.5, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 3, 1, 12 ],
"to": [ 4, 14, 13 ],
"faces": {
"up": { "uv": [ 4.5, 7, 5, 7.5 ], "texture": "#texture" },
"south": { "uv": [ 0, 0, 0.5, 7 ], "texture": "#texture" },
"west": { "uv": [ 0, 0, 0.5, 7 ], "texture": "#texture" }
}
},
{
"from": [ 3, 10, 5 ],
"to": [ 4, 12, 11 ],
"faces": {
"down": { "uv": [ 4.5, 8, 5, 11 ], "texture": "#texture" },
"up": { "uv": [ 4.5, 8, 5, 11.5 ], "texture": "#texture" },
"west": { "uv": [ 1, 1, 4, 2 ], "texture": "#texture" },
"east": { "uv": [ 1, 1, 4, 2 ], "texture": "#texture" }
}
},
{
"from": [ 3, 13, 5 ],
"to": [ 4, 14, 11 ],
"faces": {
"down": { "uv": [ 1, 11.5, 4, 12 ], "texture": "#texture" },
"up": { "uv": [ 1, 7, 4, 7.5 ], "texture": "#texture" },
"west": { "uv": [ 1, 0, 4, 0.5 ], "texture": "#texture" },
"east": { "uv": [ 1, 0, 4, 0.5 ], "texture": "#texture" }
}
},
{
"from": [ 4, 1, 3 ],
"to": [ 5, 14, 4 ],
"faces": {
"up": { "uv": [ 4, 11.5, 4.5, 12 ], "texture": "#texture" },
"north": { "uv": [ 0.5, 0, 1, 6.5 ], "texture": "#texture" },
"south": { "uv": [ 4, 0, 4.5, 6.5 ], "texture": "#texture" },
"east": { "uv": [ 4, 0, 4.5, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 4, 1, 12 ],
"to": [ 5, 14, 13 ],
"faces": {
"up": { "uv": [ 4, 7, 4.5, 7.5 ], "texture": "#texture" },
"north": { "uv": [ 0.5, 0, 1, 6.5 ], "texture": "#texture" },
"south": { "uv": [ 4, 0, 4.5, 6.5 ], "texture": "#texture" },
"east": { "uv": [ 4, 0, 4.5, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 4, 11, 4 ],
"to": [ 12, 12, 12 ],
"faces": {
"down": { "uv": [ 5.5, 0.5, 9.5, 4.5 ], "texture": "#texture" },
"up": { "uv": [ 5.5, 0.5, 9.5, 4.5 ], "texture": "#texture" },
"north": { "uv": [ 0.5, 7.5, 4.5, 8 ], "texture": "#texture" },
"south": { "uv": [ 0.5, 11, 4.5, 11.5 ], "texture": "#texture" },
"west": { "uv": [ 0.5, 7.5, 1, 11.5 ], "texture": "#texture" },
"east": { "uv": [ 4, 7.5, 4.5, 11.5 ], "texture": "#texture" }
}
},
{
"from": [ 5, 1, 3 ],
"to": [ 11, 2, 4 ],
"faces": {
"up": { "uv": [ 1, 1.5, 4, 2 ], "texture": "#texture" },
"north": { "uv": [ 1, 6, 4, 6.5 ], "texture": "#texture" },
"south": { "uv": [ 1, 6, 4, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 5, 1, 12 ],
"to": [ 11, 2, 13 ],
"faces": {
"up": { "uv": [ 1, 1.5, 4, 2 ], "texture": "#texture" },
"north": { "uv": [ 1, 6, 4, 6.5 ], "texture": "#texture" },
"south": { "uv": [ 1, 6, 4, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 5, 10, 3 ],
"to": [ 11, 12, 4 ],
"faces": {
"down": { "uv": [ 1, 1.5, 4, 2 ], "texture": "#texture" },
"up": { "uv": [ 1, 7, 4, 7.5 ], "texture": "#texture" },
"north": { "uv": [ 1, 1, 4, 2 ], "texture": "#texture" },
"south": { "uv": [ 1, 1, 4, 2 ], "texture": "#texture" }
}
},
{
"from": [ 5, 10, 12 ],
"to": [ 11, 12, 13 ],
"faces": {
"down": { "uv": [ 1, 1.5, 4, 2 ], "texture": "#texture" },
"up": { "uv": [ 1, 7, 4, 7.5 ], "texture": "#texture" },
"north": { "uv": [ 1, 1, 4, 2 ], "texture": "#texture" },
"south": { "uv": [ 1, 1, 4, 2 ], "texture": "#texture" }
}
},
{
"from": [ 5, 12, 5 ],
"to": [ 11, 13, 11 ],
"faces": {
"up": { "uv": [ 1, 8, 4, 11 ], "texture": "#texture" },
"north": { "uv": [ 5, 5.5, 8, 6 ], "texture": "#texture" },
"south": { "uv": [ 5, 5.5, 8, 6 ], "texture": "#texture" },
"west": { "uv": [ 5, 5.5, 8, 6 ], "texture": "#texture" },
"east": { "uv": [ 5, 5.5, 8, 6 ], "texture": "#texture" }
}
},
{
"from": [ 5, 13, 3 ],
"to": [ 11, 14, 4 ],
"faces": {
"down": { "uv": [ 1, 11.5, 4, 12 ], "texture": "#texture" },
"up": { "uv": [ 1, 7, 4, 7.5 ], "texture": "#texture" },
"north": { "uv": [ 1, 0, 4, 0.5 ], "texture": "#texture" },
"south": { "uv": [ 1, 0, 4, 0.5 ], "texture": "#texture" }
}
},
{
"from": [ 5, 13, 6 ],
"to": [ 6, 14, 10 ],
"faces": {
"up": { "uv": [ 3.5, 8.5, 4, 10.5 ], "texture": "#texture" },
"north": { "uv": [ 7.5, 5, 8, 5.5 ], "texture": "#texture" },
"south": { "uv": [ 5, 5, 5.5, 5.5 ], "texture": "#texture" },
"west": { "uv": [ 5.5, 5, 7.5, 5.5 ], "texture": "#texture" }
}
},
{
"from": [ 5, 13, 12 ],
"to": [ 11, 14, 13 ],
"faces": {
"down": { "uv": [ 1, 11.5, 4, 12 ], "texture": "#texture" },
"up": { "uv": [ 1, 7, 4, 7.5 ], "texture": "#texture" },
"north": { "uv": [ 1, 0, 4, 0.5 ], "texture": "#texture" },
"south": { "uv": [ 1, 0, 4, 0.5 ], "texture": "#texture" }
}
},
{
"from": [ 6, 13, 5 ],
"to": [ 10, 14, 6 ],
"faces": {
"up": { "uv": [ 1.5, 10.5, 3.5, 11 ], "texture": "#texture" },
"north": { "uv": [ 5.5, 5, 7.5, 5.5 ], "texture": "#texture" },
"west": { "uv": [ 5, 5, 5.5, 5.5 ], "texture": "#texture" },
"east": { "uv": [ 7.5, 5, 8, 5.5 ], "texture": "#texture" }
}
},
{
"from": [ 6, 13, 6 ],
"to": [ 10, 14, 10 ],
"faces": {
"up": { "uv": [ 1.5, 8.499999, 3.5, 10.5 ], "texture": "#texture" }
}
},
{
"from": [ 6, 13, 10 ],
"to": [ 10, 14, 11 ],
"faces": {
"up": { "uv": [ 1.5, 8, 3.5, 8.5 ], "texture": "#texture" },
"south": { "uv": [ 5.5, 5, 7.5, 5.5 ], "texture": "#texture" },
"west": { "uv": [ 5, 5, 5.5, 5.5 ], "texture": "#texture" },
"east": { "uv": [ 7.5, 5, 8, 5.5 ], "texture": "#texture" }
}
},
{
"from": [ 10, 13, 6 ],
"to": [ 11, 14, 10 ],
"faces": {
"up": { "uv": [ 1, 8.5, 1.5, 10.5 ], "texture": "#texture" },
"north": { "uv": [ 5, 5, 5.5, 5.5 ], "texture": "#texture" },
"south": { "uv": [ 7.5, 5, 8, 5.5 ], "texture": "#texture" },
"east": { "uv": [ 5.5, 5, 7.5, 5.5 ], "texture": "#texture" }
}
},
{
"from": [ 11, 1, 3 ],
"to": [ 12, 14, 4 ],
"faces": {
"up": { "uv": [ 0.5, 11.5, 1, 12 ], "texture": "#texture" },
"north": { "uv": [ 0.5, 0, 1, 6.5 ], "texture": "#texture" },
"south": { "uv": [ 4, 0, 4.5, 6.5 ], "texture": "#texture" },
"west": { "uv": [ 0.5, 0, 1, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 11, 1, 12 ],
"to": [ 12, 14, 13 ],
"faces": {
"up": { "uv": [ 0.5, 7, 1, 7.5 ], "texture": "#texture" },
"north": { "uv": [ 0.5, 0, 1, 6.5 ], "texture": "#texture" },
"south": { "uv": [ 4, 0, 4.5, 6.5 ], "texture": "#texture" },
"west": { "uv": [ 0.5, 0, 1, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 12, 1, 3 ],
"to": [ 13, 14, 4 ],
"faces": {
"up": { "uv": [ 0, 11.5, 0.5, 12 ], "texture": "#texture" },
"north": { "uv": [ 0, 0, 0.5, 6.5 ], "texture": "#texture" },
"east": { "uv": [ 0, 0, 0.5, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 12, 1, 4 ],
"to": [ 13, 14, 5 ],
"faces": {
"up": { "uv": [ 0, 11, 0.5, 11.5 ], "texture": "#texture" },
"south": { "uv": [ 4, 0, 4.5, 6.5 ], "texture": "#texture" },
"west": { "uv": [ 0.5, 0, 1, 6.5 ], "texture": "#texture" },
"east": { "uv": [ 4, 0, 4.5, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 12, 1, 5 ],
"to": [ 13, 2, 11 ],
"faces": {
"up": { "uv": [ 0.5, 1.5, 1, 4.5 ], "texture": "#texture" },
"west": { "uv": [ 1, 6, 4, 6.5 ], "texture": "#texture" },
"east": { "uv": [ 1, 6, 4, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 12, 1, 11 ],
"to": [ 13, 14, 12 ],
"faces": {
"up": { "uv": [ 0, 7.5, 0.5, 8 ], "texture": "#texture" },
"north": { "uv": [ 0.5, 0, 1, 6.5 ], "texture": "#texture" },
"west": { "uv": [ 0.5, 0, 1, 6.5 ], "texture": "#texture" },
"east": { "uv": [ 4, 0, 4.5, 6.5 ], "texture": "#texture" }
}
},
{
"from": [ 12, 1, 12 ],
"to": [ 13, 14, 13 ],
"faces": {
"up": { "uv": [ 0, 7, 0.5, 7.5 ], "texture": "#texture" },
"south": { "uv": [ 0, 0, 0.5, 7 ], "texture": "#texture" },
"east": { "uv": [ 0, 0, 0.5, 7 ], "texture": "#texture" }
}
},
{
"from": [ 12, 10, 5 ],
"to": [ 13, 12, 11 ],
"faces": {
"down": { "uv": [ 0, 8, 0.5, 11 ], "texture": "#texture" },
"up": { "uv": [ 0, 8, 0.5, 11 ], "texture": "#texture" },
"west": { "uv": [ 1, 1, 4, 2 ], "texture": "#texture" },
"east": { "uv": [ 1, 1, 4, 2 ], "texture": "#texture" }
}
},
{
"from": [ 12, 13, 5 ],
"to": [ 13, 14, 11 ],
"faces": {
"down": { "uv": [ 1, 11.5, 4, 12 ], "texture": "#texture" },
"up": { "uv": [ 1, 7, 4, 7.5 ], "texture": "#texture" },
"west": { "uv": [ 1, 0, 4, 0.5 ], "texture": "#texture" },
"east": { "uv": [ 1, 0, 4, 0.5 ], "texture": "#texture" }
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [ 75, 45, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"thirdperson_lefthand": {
"rotation": [ 75, 45, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"firstperson_righthand": {
"rotation": [ 0, 45, 0 ],
"scale": [ 0.4, 0.4, 0.4 ]
},
"firstperson_lefthand": {
"rotation": [ 0, 45, 0 ],
"scale": [ 0.4, 0.4, 0.4 ]
},
"gui": {
"rotation": [ 30, 225, 0 ],
"scale": [ 0.625, 0.625, 0.625 ]
},
"head": {
"translation": [ 0, 12, 0 ],
"scale": [ 0.5, 0.5, 0.5 ]
},
"ground": {
"translation": [ 0, 3, 0 ],
"scale": [ 0.25, 0.25, 0.25 ]
},
"fixed": {
"scale": [ 0.5, 0.5, 0.5 ]
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 B

After

Width:  |  Height:  |  Size: 911 B