1.12 Release commit v1.0.12.

This commit is contained in:
stfwi 2019-10-01 14:40:05 +02:00
parent 0ad6e542ba
commit d0fe9788fd
14 changed files with 390 additions and 18 deletions

View file

@ -4,4 +4,4 @@ org.gradle.jvmargs=-Xmx8G
version_minecraft=1.12.2
version_forge=14.23.5.2768
version_jei=4.10.0.198
version_engineersdecor=1.0.12-b2
version_engineersdecor=1.0.12

View file

@ -1,6 +1,7 @@
{
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
"1.12.2": {
"1.0.12": "[R] Release based on v1.0.12-b2. Release-to-release changes: * Crafting table: Recipe collision resolver added. Items are rendered on the table surface. * Small Mineral Smelter released. * Factory Dropper: Continuous dropping mode added. * Block opacity fixes, window model fixes. * Lang file updates.",
"1.0.12-b2": "[A] Crafting Table: Added recipe collision resolver, also applies to crafting history refabrication.\n[A] Crafting Table: Added rendering of placed items on the top surface of the table.\n[M] Lang files updated.",
"1.0.12-b1": "[A] Mineal Smelter non-experimental now.\n[M] Window submodels stripped (reopened issue #19, thx overchoice).\n[M] Opaque full block light opacity fixed (issue #50, thx Illomiurge).\n[M] Factory Dropper: Added pulse/continuous mode in GUI (issue #51, thx Aristine for the CR).",
"1.0.11": "[R] Release based on v1.0.11-b3. Release-to-release changes: * Steel floor grating improvments. * Minor model box fixes. * Standalone recipes added. * Language updates.",
@ -56,7 +57,7 @@
"1.0.0-b1": "[A] Initial structure.\n[A] Added clinker bricks and clinker brick stairs.\n[A] Added slag bricks and slag brick stairs.\n[A] Added metal rung ladder.\n[A] Added staggered metal steps ladder.\n[A] Added treated wood ladder.\n[A] Added treated wood pole.\n[A] Added treated wood table."
},
"promos": {
"1.12.2-recommended": "1.0.11",
"1.12.2-latest": "1.0.12-b2"
"1.12.2-recommended": "1.0.12",
"1.12.2-latest": "1.0.12"
}
}

View file

@ -10,6 +10,16 @@ Mod sources for Minecraft version 1.12.2.
----
## Version history
-------------------------------------------------------------------
- v1.0.12 [R] Release based on v1.0.12-b2. Release-to-release changes:
* Crafting table: Recipe collision resolver added. Items are
rendered on the table surface.
* Small Mineral Smelter released.
* Factory Dropper: Continuous dropping mode added.
* Block opacity fixes, window model fixes.
* Lang file updates.
-------------------------------------------------------------------
- v1.0.12-b2 [A] Crafting Table: Added recipe collision resolver,
also applies to crafting history refabrication.
[A] Crafting Table: Added rendering of placed items

View file

@ -388,6 +388,15 @@ public class ModContent
Material.IRON, 0.6f, 10f, SoundType.METAL
);
//--------------------------------------------------------------------------------------------------------------------
public static final BlockDecorTest TEST_BLOCK = new BlockDecorTest(
"testblock",
BlockDecor.CFG_LOOK_PLACEMENT|BlockDecor.CFG_FLIP_PLACEMENT_SHIFTCLICK,
Material.IRON, 0.1f, 9000f, SoundType.METAL,
ModAuxiliaries.getPixeledAABB(0,0,0, 16,16,16)
);
//--------------------------------------------------------------------------------------------------------------------
//-- Tile entities
//--------------------------------------------------------------------------------------------------------------------
@ -433,6 +442,10 @@ public class ModContent
BlockDecorTreeCutter.BTileEntity.class, "te_small_tree_cutter"
);
private static final TileEntityRegistrationData TEST_BLOCK_TEI = new TileEntityRegistrationData(
BlockDecorTest.BTileEntity.class, "te_testblock"
);
//--------------------------------------------------------------------------------------------------------------------
//-- Block registration list
//--------------------------------------------------------------------------------------------------------------------
@ -495,9 +508,10 @@ public class ModContent
private static final Object dev_content[] = {
SIGN_MINDSTEP,
PANZERGLASS_SLAB, // @todo: check if another class is needed due to is_side_visible
SMALL_SOLAR_PANEL,SMALL_SOLAR_PANEL_TEI, // @todo: check power tuning <= Peltier generator
TREATED_WOOD_FLOOR, // @todo: check if textures need improvement
SMALL_TREE_CUTTER,SMALL_TREE_CUTTER_TEI, // @todo: test
SMALL_SOLAR_PANEL,SMALL_SOLAR_PANEL_TEI,
SMALL_TREE_CUTTER,SMALL_TREE_CUTTER_TEI,
TEST_BLOCK,TEST_BLOCK_TEI
};
//--------------------------------------------------------------------------------------------------------------------
@ -600,6 +614,9 @@ public class ModContent
if(!ModConfig.isOptedOut(TREATED_WOOD_CRAFTING_TABLE)) {
ClientRegistry.bindTileEntitySpecialRenderer(BlockDecorCraftingTable.BTileEntity.class, new ModTesrs.TesrDecorCraftingTable());
}
if(!ModConfig.isOptedOut(TEST_BLOCK)) {
ClientRegistry.bindTileEntitySpecialRenderer(BlockDecorTest.BTileEntity.class, new ModTesrs.TesrDecorTest());
}
}
}

View file

@ -0,0 +1,93 @@
/*
* @file BlockDecorTest.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2019 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Smaller (cutout) block with a defined facing.
*/
package wile.engineersdecor.blocks;
import wile.engineersdecor.detail.ModAuxiliaries;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.block.material.Material;
import net.minecraft.block.SoundType;
import net.minecraft.util.math.AxisAlignedBB;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class BlockDecorTest extends BlockDecorDirected implements ModAuxiliaries.IExperimentalFeature
{
public BlockDecorTest(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB)
{ super(registryName, config, material, hardness, resistance, sound, unrotatedAABB); }
@Override
public boolean hasTileEntity(IBlockState state)
{ return true; }
@Override
public TileEntity createTileEntity(World world, IBlockState state)
{ return new BTileEntity(); }
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
{ return clicked(world, pos, player, false); }
@Override
public void onBlockClicked(World world, BlockPos pos, EntityPlayer player)
{ clicked(world, pos, player, true); }
private boolean clicked(World world, BlockPos pos, EntityPlayer player, boolean lclick)
{ TileEntity te = world.getTileEntity(pos); return (te instanceof BTileEntity) && ((BTileEntity)te).clicked(player, lclick); }
//--------------------------------------------------------------------------------------------------------------------
// Tile entity
//--------------------------------------------------------------------------------------------------------------------
public static class BTileEntity extends TileEntity implements ITickable
{
public static double increment = 0.008;
private double progress_ = 0;
private double incr_ = increment;
public BTileEntity()
{}
@Override
public boolean shouldRefresh(World world, BlockPos pos, IBlockState os, IBlockState ns)
{ return (os.getBlock() != ns.getBlock()) || (!(ns.getBlock() instanceof BlockDecorTest)); }
public double progress()
{ return progress_; }
public boolean clicked(EntityPlayer player, boolean lclicked)
{
progress_ = 0;
incr_ = increment;
return true;
}
@Override
public void update()
{
progress_ += incr_;
if(progress_ < 0) {
incr_ = increment;
progress_ = 0;
} else if(progress_ > 1.0) {
progress_ = 1.0;
incr_ = -increment;
}
}
}
}

View file

@ -11,16 +11,23 @@ package wile.engineersdecor.detail;
import wile.engineersdecor.ModEngineersDecor;
import wile.engineersdecor.blocks.BlockDecorCraftingTable;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.*;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.init.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import wile.engineersdecor.blocks.BlockDecorTest;
public class ModTesrs
{
@ -82,4 +89,36 @@ public class ModTesrs
}
}
//--------------------------------------------------------------------------------------------------------------------
@SideOnly(Side.CLIENT)
public static class TesrDecorTest extends TileEntitySpecialRenderer<BlockDecorTest.BTileEntity>
{
@Override
public void render(final BlockDecorTest.BTileEntity te, double x, double y, double z, final float partialTicks, final int destroyStage, final float alpha)
{
renderBlockState(Blocks.SANDSTONE.getDefaultState(), te.getPos(), (new Vec3d(1,1,1)).scale(te.progress()), x,y,z);
}
public void renderBlockState(IBlockState state, BlockPos pos, Vec3d offset, double basex, double basey, double basez)
{
if(state.getMaterial() == Material.AIR) return;
BlockRendererDispatcher brd = Minecraft.getMinecraft().getBlockRendererDispatcher();
Tessellator tessellator = Tessellator.getInstance();
BufferBuilder bb = tessellator.getBuffer();
bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
RenderHelper.disableStandardItemLighting();
GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
GlStateManager.enableBlend();
GlStateManager.disableCull();
GlStateManager.shadeModel(Minecraft.isAmbientOcclusionEnabled() ? 7425 : 7424);
bb.begin(7, DefaultVertexFormats.BLOCK);
bb.setTranslation(basex-(double)pos.getX()+offset.x, basey-(double)pos.getY()+offset.y,basez-(double)pos.getZ()+offset.z);
final boolean checkSides=true;
brd.getBlockModelRenderer().renderModel(getWorld(), brd.getModelForState(state), state, pos, bb, checkSides);
bb.setTranslation(0.0, 0.0, 0.0);
tessellator.draw();
RenderHelper.enableStandardItemLighting();
}
}
}

View file

@ -0,0 +1,9 @@
{
"forge_marker": 1,
"defaults": { "model": "engineersdecor:std/testblock_model" },
"variants": {
"normal": [{}],
"inventory": [{}],
"facing": { "north":{"y":0}, "south":{"y":180}, "west":{"y":270}, "east":{"y":90}, "up": {"x":-90}, "down": {"x":90} }
}
}

View file

@ -198,7 +198,8 @@ tile.engineersdecor.halfslab_sheetmetal_gold.name=Gold Sheet Metal Slice
tile.engineersdecor.halfslab_sheetmetal_gold.help=§6Vertically stackable slice.§r Right/left click with the slice stack on the top or bottom surface to add/remove slices.
tile.engineersdecor.halfslab_sheetmetal_aluminum.name=Aluminum Sheet Metal Slice
tile.engineersdecor.halfslab_sheetmetal_aluminum.help=§6Vertically stackable slice.§r Right/left click with the slice stack on the top or bottom surface to add/remove slices.
tile.engineersdecor.testblock.name=ED Test Block (do NOT use)
tile.engineersdecor.testblock.help=§6Uncraftable mod testing block with changing experimental functionality. DO NOT USE, may even cause a crash in the worst case!!
#-----------------------------------------------------------------------------------------------------------
engineersdecor.config.title=Engineer's Decor Config
engineersdecor.config.pattern_excludes=Pattern excludes
@ -243,7 +244,6 @@ engineersdecor.config.pipevalve_max_flowrate=Valves: Max flow rate
engineersdecor.config.pipevalve_redstone_gain=Valves: Redstone slope
engineersdecor.config.e_furnace_speed_percent=E-furnace: Smelting speed %
engineersdecor.config.e_furnace_power_consumption=E-furnace: Power consumption
#-----------------------------------------------------------------------------------------------------------
# EOF
#-----------------------------------------------------------------------------------------------------------

View file

@ -193,7 +193,8 @@ tile.engineersdecor.halfslab_sheetmetal_gold.name=Часть золотого л
tile.engineersdecor.halfslab_sheetmetal_gold.help=§6Вертикально наращиваемая часть.§rПравый/левый щелчок со стеком частей на верхней или нижней поверхности для добавления/удаления частей.
tile.engineersdecor.halfslab_sheetmetal_aluminum.name=Часть алюминиевого листового металла
tile.engineersdecor.halfslab_sheetmetal_aluminum.help=§6Вертикально наращиваемая часть.§rПравый/левый щелчок со стеком частей на верхней или нижней поверхности для добавления/удаления частей.
tile.engineersdecor.testblock.name=ED Test Block (do NOT use)
#tile.engineersdecor.testblock.help=§6Uncraftable mod testing block with changing experimental functionality. DO NOT USE, may even cause a crash in the worst case!!
#-----------------------------------------------------------------------------------------------------------
engineersdecor.config.title=Конфигурация "Engineer's Decor"
engineersdecor.config.pattern_excludes=Pattern excludes
@ -238,7 +239,6 @@ engineersdecor.config.pipevalve_max_flowrate=Клапаны: максималь
engineersdecor.config.pipevalve_redstone_gain=Клапаны: спад красного камня
engineersdecor.config.e_furnace_speed_percent=Электропечь: скорость плавления %
engineersdecor.config.e_furnace_power_consumption=Электропечь: потребление энергии
#-----------------------------------------------------------------------------------------------------------
# EOF
#-----------------------------------------------------------------------------------------------------------

View file

@ -196,7 +196,8 @@ tile.engineersdecor.halfslab_sheetmetal_gold.name=Gold Sheet Metal Slice
#tile.engineersdecor.halfslab_sheetmetal_gold.help=§6Vertically stackable slice.§r Right/left click with the slice stack on the top or bottom surface to add/remove slices.
tile.engineersdecor.halfslab_sheetmetal_aluminum.name=Aluminum Sheet Metal Slice
#tile.engineersdecor.halfslab_sheetmetal_aluminum.help=§6Vertically stackable slice.§r Right/left click with the slice stack on the top or bottom surface to add/remove slices.
tile.engineersdecor.testblock.name=ED Test Block (do NOT use)
#tile.engineersdecor.testblock.help=§6Uncraftable mod testing block with changing experimental functionality. DO NOT USE, may even cause a crash in the worst case!!
#-----------------------------------------------------------------------------------------------------------
engineersdecor.config.title=工程师的装饰配置
engineersdecor.config.pattern_excludes=Pattern excludes
@ -241,7 +242,6 @@ engineersdecor.config.pipevalve_max_flowrate=Valves: Max flow rate
engineersdecor.config.pipevalve_redstone_gain=Valves: Redstone slope
engineersdecor.config.e_furnace_speed_percent=E-furnace: Smelting speed %
engineersdecor.config.e_furnace_power_consumption=E-furnace: Power consumption
#-----------------------------------------------------------------------------------------------------------
# EOF
#-----------------------------------------------------------------------------------------------------------

View file

@ -0,0 +1,201 @@
{
"textures": {
"y": "engineersdecor:blocks/iestyle/steel_texture",
"particle": "engineersdecor:blocks/iestyle/steel_texture",
"x": "engineersdecor:blocks/furnace/small_waste_incinerator_side",
"z": "engineersdecor:blocks/iestyle/treated_wood",
"t": "engineersdecor:blocks/iestyle/treated_wood_rough_texture"
},
"elements": [
{
"from": [1, 0, 0],
"to": [16, 1, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]},
"faces": {
"north": {"uv": [0, 4, 15, 5], "texture": "#x"},
"east": {"uv": [3, 4, 4, 5], "texture": "#x"},
"south": {"uv": [1, 4, 16, 5], "texture": "#x"},
"west": {"uv": [4, 4, 5, 5], "texture": "#x"},
"up": {"uv": [1, 4, 16, 5], "texture": "#x"},
"down": {"uv": [0, 5, 15, 6], "texture": "#x"}
}
},
{
"from": [0, 1, 0],
"to": [1, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]},
"faces": {
"north": {"uv": [0, 0, 1, 15], "texture": "#y"},
"east": {"uv": [0, 0, 1, 15], "texture": "#y"},
"south": {"uv": [0, 0, 1, 15], "texture": "#y"},
"west": {"uv": [0, 0, 1, 15], "texture": "#y"},
"up": {"uv": [0, 0, 1, 1], "texture": "#y"},
"down": {"uv": [0, 0, 1, 1], "texture": "#y"}
}
},
{
"from": [0, 0, 1],
"to": [1, 1, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9]},
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#z"},
"east": {"uv": [0, 0, 15, 1], "texture": "#z"},
"south": {"uv": [0, 0, 1, 1], "texture": "#z"},
"west": {"uv": [0, 0, 15, 1], "texture": "#z"},
"up": {"uv": [0, 0, 1, 15], "texture": "#z"},
"down": {"uv": [0, 0, 1, 15], "texture": "#z"}
}
},
{
"from": [7.75, 0, 1],
"to": [8.25, 0.25, 5],
"rotation": {"angle": 0, "axis": "y", "origin": [15, 8, 9]},
"faces": {
"north": {"uv": [0, 0, 0.5, 0.25], "texture": "#t"},
"east": {"uv": [0, 0, 4, 0.25], "texture": "#t"},
"south": {"uv": [0, 0, 0.5, 0.25], "texture": "#t"},
"west": {"uv": [0, 0, 4, 0.25], "texture": "#t"},
"up": {"uv": [0, 0, 0.5, 4], "texture": "#t"},
"down": {"uv": [0, 0, 0.5, 4], "texture": "#t"}
}
},
{
"from": [8.25, 0, 1.5],
"to": [8.75, 0.25, 2.5],
"rotation": {"angle": 0, "axis": "y", "origin": [15.5, 8, 9]},
"faces": {
"north": {"uv": [0, 0, 0.5, 0.25], "texture": "#t"},
"east": {"uv": [0, 0, 1, 0.25], "texture": "#t"},
"south": {"uv": [0, 0, 0.5, 0.25], "texture": "#t"},
"west": {"uv": [0, 0, 1, 0.25], "texture": "#t"},
"up": {"uv": [0, 0, 0.5, 1], "texture": "#t"},
"down": {"uv": [0, 0, 0.5, 1], "texture": "#t"}
}
},
{
"from": [8.75, 0, 2],
"to": [9.25, 0.25, 3],
"rotation": {"angle": 0, "axis": "y", "origin": [16, 8, 9.5]},
"faces": {
"north": {"uv": [0, 0, 0.5, 0.25], "texture": "#t"},
"east": {"uv": [0, 0, 1, 0.25], "texture": "#t"},
"south": {"uv": [0, 0, 0.5, 0.25], "texture": "#t"},
"west": {"uv": [0, 0, 1, 0.25], "texture": "#t"},
"up": {"uv": [0, 0, 0.5, 1], "texture": "#t"},
"down": {"uv": [0, 0, 0.5, 1], "texture": "#t"}
}
},
{
"from": [6.75, 0, 2],
"to": [7.25, 0.25, 3],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 8, 9.5]},
"faces": {
"north": {"uv": [0, 0, 0.5, 0.25], "texture": "#t"},
"east": {"uv": [0, 0, 1, 0.25], "texture": "#t"},
"south": {"uv": [0, 0, 0.5, 0.25], "texture": "#t"},
"west": {"uv": [0, 0, 1, 0.25], "texture": "#t"},
"up": {"uv": [0, 0, 0.5, 1], "texture": "#t"},
"down": {"uv": [0, 0, 0.5, 1], "texture": "#t"}
}
},
{
"from": [7.25, 0, 1.5],
"to": [7.75, 0.25, 2.5],
"rotation": {"angle": 0, "axis": "y", "origin": [14.5, 8, 9]},
"faces": {
"north": {"uv": [0, 0, 0.5, 0.25], "texture": "#t"},
"east": {"uv": [0, 0, 1, 0.25], "texture": "#t"},
"south": {"uv": [0, 0, 0.5, 0.25], "texture": "#t"},
"west": {"uv": [0, 0, 1, 0.25], "texture": "#t"},
"up": {"uv": [0, 0, 0.5, 1], "texture": "#t"},
"down": {"uv": [0, 0, 0.5, 1], "texture": "#t"}
}
},
{
"from": [0, 0, 0],
"to": [1, 1, 1],
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#t"},
"east": {"uv": [0, 0, 1, 1], "texture": "#t"},
"south": {"uv": [0, 0, 1, 1], "texture": "#t"},
"west": {"uv": [0, 0, 1, 1], "texture": "#t"},
"up": {"uv": [0, 0, 1, 1], "texture": "#t"},
"down": {"uv": [0, 0, 1, 1], "texture": "#t"}
}
},
{
"from": [15, 0, 15],
"to": [16, 1, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 23]},
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#t"},
"east": {"uv": [0, 0, 1, 1], "texture": "#t"},
"south": {"uv": [0, 0, 1, 1], "texture": "#t"},
"west": {"uv": [0, 0, 1, 1], "texture": "#t"},
"up": {"uv": [0, 0, 1, 1], "texture": "#t"},
"down": {"uv": [0, 0, 1, 1], "texture": "#t"}
}
},
{
"from": [15, 15, 0],
"to": [16, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [23, 23, 8]},
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#t"},
"east": {"uv": [0, 0, 1, 1], "texture": "#t"},
"south": {"uv": [0, 0, 1, 1], "texture": "#t"},
"west": {"uv": [0, 0, 1, 1], "texture": "#t"},
"up": {"uv": [0, 0, 1, 1], "texture": "#t"},
"down": {"uv": [0, 0, 1, 1], "texture": "#t"}
}
},
{
"from": [0, 15, 15],
"to": [1, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 23]},
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#t"},
"east": {"uv": [0, 0, 1, 1], "texture": "#t"},
"south": {"uv": [0, 0, 1, 1], "texture": "#t"},
"west": {"uv": [0, 0, 1, 1], "texture": "#t"},
"up": {"uv": [0, 0, 1, 1], "texture": "#t"},
"down": {"uv": [0, 0, 1, 1], "texture": "#t"}
}
},
{
"from": [15, 15, 15],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [23, 23, 23]},
"faces": {
"north": {"uv": [0, 0, 1, 1], "texture": "#t"},
"east": {"uv": [0, 0, 1, 1], "texture": "#t"},
"south": {"uv": [0, 0, 1, 1], "texture": "#t"},
"west": {"uv": [0, 0, 1, 1], "texture": "#t"},
"up": {"uv": [0, 0, 1, 1], "texture": "#t"},
"down": {"uv": [0, 0, 1, 1], "texture": "#t"}
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [108, 6, -23],
"translation": [1.75, -0.5, -2.5],
"scale": [0.4, 0.4, 0.4]
},
"firstperson_righthand": {
"rotation": [120, 30, 0],
"translation": [1.75, 1.25, -0.25],
"scale": [0.35, 0.35, 0.35]
},
"ground": {
"scale": [0.2, 0.2, 0.2]
},
"gui": {
"rotation": [30, 225, 0],
"scale": [0.625, 0.625, 0.625]
},
"fixed": {
"scale": [0.5, 0.5, 0.5]
}
}
}