Hi all first time post so please be nice
my first time modding for minecraft and with forge, I have followed a tutorial done by MrCrayfish on youtube and got it working just the basic item/block, but now I'm trying to do a little more advance advance stuff and cannot understand why its not working as far as I'm aware I have all the paths set correctly and right elements but I still get this error:
log report
here is my entire mod:
WindowsMod.java
package com.dot6.windows;
import com.dot6.windows.init.WindowBlocks;
import com.dot6.windows.init.WindowItems;
import com.dot6.windows.proxy.CommonProxy;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
@Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.VERSION)
public class WindowsMod {
@SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.SERVER_PROXY_CLASS)
public static CommonProxy proxy;
@EventHandler
public void preInit(FMLPreInitializationEvent event)
{
WindowBlocks.init();
WindowBlocks.register();
//WindowItems.init();
//WindowItems.register();
}
@EventHandler
public void preInit(FMLInitializationEvent event)
{
}
@EventHandler
public void preInit(FMLPostInitializationEvent event)
{
proxy.registerRenders();
}
}
Reference.java
package com.dot6.windows;
public class Reference {
public static final String MOD_ID = "wm";
public static final String MOD_NAME = "Windows Mod";
public static final String VERSION = "1.0";
public static final String CLIENT_PROXY_CLASS = "com.dot6.windows.proxy.ClientProxy";
public static final String SERVER_PROXY_CLASS = "com.dot6.windows.proxy.CommonProxy";
}
ClientProxy.java
package com.dot6.windows.proxy;
import com.dot6.windows.init.WindowItems;
import com.dot6.windows.init.WindowBlocks;
public class ClientProxy extends CommonProxy{
@Override
public void registerRenders(){
WindowBlocks.registerRenders();
//WindowItems.registerRenders();
}
}
CommonProxy.java
package com.dot6.windows.proxy;
public class CommonProxy {
public void registerRenders(){
}
}
WindowBlock.java
package com.dot6.windows.init;
import com.dot6.windows.Reference;
import com.dot6.windows.blocks.BlockWindow;
import net.minecraft.block.Block;
import net.minecraft.block.BlockPlanks;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.fml.common.registry.GameRegistry;
public class WindowBlocks {
public static Block block_window;
public static void init() {
block_window = new BlockWindow(BlockPlanks.EnumType.OAK).setUnlocalizedName("block_window");
}
public static void register()
{
GameRegistry.registerBlock(block_window, block_window.getUnlocalizedName().substring(5));
}
public static void registerRenders()
{
registedrRender(block_window);
}
public static void registedrRender(Block block)
{
Item item = Item.getItemFromBlock(block);
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MOD_ID + ":" + item.getUnlocalizedName().substring(5), "inventory"));
}
}
BlockWindow.java
package com.dot6.windows.blocks;
import net.minecraft.block.Block;
import net.minecraft.block.BlockDirectional;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class BlockWindow extends BlockDirectional
{
public static final PropertyBool OPEN = PropertyBool.create("open");
public static final PropertyBool POWERED = PropertyBool.create("powered");
public static final PropertyBool IN_WALL = PropertyBool.create("in_wall");
public BlockWindow(BlockPlanks.EnumType p_i46394_1_)
{
super(Material.wood, p_i46394_1_.func_181070_c());
this.setDefaultState(this.blockState.getBaseState().withProperty(OPEN, Boolean.valueOf(false)).withProperty(POWERED, Boolean.valueOf(false)).withProperty(IN_WALL, Boolean.valueOf(false)));
this.setCreativeTab(CreativeTabs.tabRedstone);
}
/**
* Get the actual Block state of this Block at the given position. This applies properties not visible in the
* metadata, such as fence connections.
*/
public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos)
{
EnumFacing.Axis enumfacing$axis = ((EnumFacing)state.getValue(FACING)).getAxis();
if (enumfacing$axis == EnumFacing.Axis.Z && (worldIn.getBlockState(pos.west()).getBlock() == Blocks.cobblestone_wall || worldIn.getBlockState(pos.east()).getBlock() == Blocks.cobblestone_wall) || enumfacing$axis == EnumFacing.Axis.X && (worldIn.getBlockState(pos.north()).getBlock() == Blocks.cobblestone_wall || worldIn.getBlockState(pos.south()).getBlock() == Blocks.cobblestone_wall))
{
state = state.withProperty(IN_WALL, Boolean.valueOf(true));
}
return state;
}
public boolean canPlaceBlockAt(World worldIn, BlockPos pos)
{
return worldIn.getBlockState(pos.down()).getBlock().getMaterial().isSolid() ? super.canPlaceBlockAt(worldIn, pos) : false;
}
public AxisAlignedBB getCollisionBoundingBox(World worldIn, BlockPos pos, IBlockState state)
{
if (((Boolean)state.getValue(OPEN)).booleanValue())
{
return null;
}
else
{
EnumFacing.Axis enumfacing$axis = ((EnumFacing)state.getValue(FACING)).getAxis();
return enumfacing$axis == EnumFacing.Axis.Z ? new AxisAlignedBB((double)pos.getX(), (double)pos.getY(), (double)((float)pos.getZ() + 0.375F), (double)(pos.getX() + 1), (double)((float)pos.getY() + 1.5F), (double)((float)pos.getZ() + 0.625F)) : new AxisAlignedBB((double)((float)pos.getX() + 0.375F), (double)pos.getY(), (double)pos.getZ(), (double)((float)pos.getX() + 0.625F), (double)((float)pos.getY() + 1.5F), (double)(pos.getZ() + 1));
}
}
public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos)
{
EnumFacing.Axis enumfacing$axis = ((EnumFacing)worldIn.getBlockState(pos).getValue(FACING)).getAxis();
if (enumfacing$axis == EnumFacing.Axis.Z)
{
this.setBlockBounds(0.0F, 0.0F, 0.375F, 1.0F, 1.0F, 0.625F);
}
else
{
this.setBlockBounds(0.375F, 0.0F, 0.0F, 0.625F, 1.0F, 1.0F);
}
}
/**
* Used to determine ambient occlusion and culling when rebuilding chunks for render
*/
public boolean isOpaqueCube()
{
return false;
}
public boolean isFullCube()
{
return false;
}
public boolean isPassable(IBlockAccess worldIn, BlockPos pos)
{
return ((Boolean)worldIn.getBlockState(pos).getValue(OPEN)).booleanValue();
}
/**
* Called by ItemBlocks just before a block is actually set in the world, to allow for adjustments to the
* IBlockstate
*/
public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
{
return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing()).withProperty(OPEN, Boolean.valueOf(false)).withProperty(POWERED, Boolean.valueOf(false)).withProperty(IN_WALL, Boolean.valueOf(false));
}
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ)
{
if (((Boolean)state.getValue(OPEN)).booleanValue())
{
state = state.withProperty(OPEN, Boolean.valueOf(false));
worldIn.setBlockState(pos, state, 2);
}
else
{
EnumFacing enumfacing = EnumFacing.fromAngle((double)playerIn.rotationYaw);
if (state.getValue(FACING) == enumfacing.getOpposite())
{
state = state.withProperty(FACING, enumfacing);
}
state = state.withProperty(OPEN, Boolean.valueOf(true));
worldIn.setBlockState(pos, state, 2);
}
worldIn.playAuxSFXAtEntity(playerIn, ((Boolean)state.getValue(OPEN)).booleanValue() ? 1003 : 1006, pos, 0);
return true;
}
/**
* Called when a neighboring block changes.
*/
public void onNeighborBlockChange(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock)
{
if (!worldIn.isRemote)
{
boolean flag = worldIn.isBlockPowered(pos);
if (flag || neighborBlock.canProvidePower())
{
if (flag && !((Boolean)state.getValue(OPEN)).booleanValue() && !((Boolean)state.getValue(POWERED)).booleanValue())
{
worldIn.setBlockState(pos, state.withProperty(OPEN, Boolean.valueOf(true)).withProperty(POWERED, Boolean.valueOf(true)), 2);
worldIn.playAuxSFXAtEntity((EntityPlayer)null, 1003, pos, 0);
}
else if (!flag && ((Boolean)state.getValue(OPEN)).booleanValue() && ((Boolean)state.getValue(POWERED)).booleanValue())
{
worldIn.setBlockState(pos, state.withProperty(OPEN, Boolean.valueOf(false)).withProperty(POWERED, Boolean.valueOf(false)), 2);
worldIn.playAuxSFXAtEntity((EntityPlayer)null, 1006, pos, 0);
}
else if (flag != ((Boolean)state.getValue(POWERED)).booleanValue())
{
worldIn.setBlockState(pos, state.withProperty(POWERED, Boolean.valueOf(flag)), 2);
}
}
}
}
@SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(IBlockAccess worldIn, BlockPos pos, EnumFacing side)
{
return true;
}
/**
* Convert the given metadata into a BlockState for this Block
*/
public IBlockState getStateFromMeta(int meta)
{
return this.getDefaultState().withProperty(FACING, EnumFacing.getHorizontal(meta)).withProperty(OPEN, Boolean.valueOf((meta & 4) != 0)).withProperty(POWERED, Boolean.valueOf((meta & != 0));
}
/**
* Convert the BlockState into the correct metadata value
*/
public int getMetaFromState(IBlockState state)
{
int i = 0;
i = i | ((EnumFacing)state.getValue(FACING)).getHorizontalIndex();
if (((Boolean)state.getValue(POWERED)).booleanValue())
{
i |= 8;
}
if (((Boolean)state.getValue(OPEN)).booleanValue())
{
i |= 4;
}
return i;
}
protected BlockState createBlockState()
{
return new BlockState(this, new IProperty[] {FACING, OPEN, POWERED, IN_WALL});
}
}
block_window.json
{
"variants": {
"facing=south,in_wall=false,open=false": { "model": "wm:oak_window_closed" },
"facing=west,in_wall=false,open=false": { "model": "wm:oak_window_closed", "y": 90, "uvlock": true },
"facing=north,in_wall=false,open=false": { "model": "wm:oak_window_closed", "y": 180, "uvlock": true },
"facing=east,in_wall=false,open=false": { "model": "wm:oak_window_closed", "y": 270, "uvlock": true },
"facing=south,in_wall=false,open=true": { "model": "wm:oak_window_open" },
"facing=west,in_wall=false,open=true": { "model": "wm:oak_window_open", "y": 90, "uvlock": true },
"facing=north,in_wall=false,open=true": { "model": "wm:oak_window_open", "y": 180, "uvlock": true },
"facing=east,in_wall=false,open=true": { "model": "wm:oak_window_open", "y": 270, "uvlock": true },
"facing=south,in_wall=true,open=false": { "model": "wm:oak_wall_window_closed" },
"facing=west,in_wall=true,open=false": { "model": "wm:oak_wall_window_closed", "y": 90, "uvlock": true },
"facing=north,in_wall=true,open=false": { "model": "wm:oak_wall_window_closed", "y": 180, "uvlock": true },
"facing=east,in_wall=true,open=false": { "model": "wm:oak_wall_window_closed", "y": 270, "uvlock": true },
"facing=south,in_wall=true,open=true": { "model": "wm:oak_wall_window_open" },
"facing=west,in_wall=true,open=true": { "model": "wm:oak_wall_window_open", "y": 90, "uvlock": true },
"facing=north,in_wall=true,open=true": { "model": "wm:oak_wall_window_open", "y": 180, "uvlock": true },
"facing=east,in_wall=true,open=true": { "model": "wm:oak_wall_window_open", "y": 270, "uvlock": true }
}
}
oak_wall_window_closed.json
{
"parent": "wm:block/oak_window_closed",
"textures": {
"texture": "blocks/planks_oak"
}
}
oak_wall_window_open.json
{
"parent": "wm:block/oak_window_open",
"textures": {
"texture": "blocks/planks_oak"
}
}
oak_window_closed.json
{
"parent": "wm:block/window_closed",
"textures": {
"texture": "blocks/planks_oak"
}
}
oak_window_open.json
{
"parent": "wm:block/window_open",
"textures": {
"texture": "blocks/planks_oak"
}
}
window_closed.json
{
"textures": {
"particle" : "#texture"
},
"elements": [
{ "__comment": "Left-hand post",
"from": [ 0, 5, 7 ],
"to": [ 2, 16, 9 ],
"faces": {
"down": { "uv": [ 0, 7, 2, 9 ], "texture": "#texture" },
"up": { "uv": [ 0, 7, 2, 9 ], "texture": "#texture" },
"north": { "uv": [ 0, 0, 2, 11 ], "texture": "#texture" },
"south": { "uv": [ 0, 0, 2, 11 ], "texture": "#texture" },
"west": { "uv": [ 7, 0, 9, 11 ], "texture": "#texture", "cullface": "west" },
"east": { "uv": [ 7, 0, 9, 11 ], "texture": "#texture" }
}
},
{ "__comment": "Right-hand post",
"from": [ 14, 5, 7 ],
"to": [ 16, 16, 9 ],
"faces": {
"down": { "uv": [ 14, 7, 16, 9 ], "texture": "#texture" },
"up": { "uv": [ 14, 7, 16, 9 ], "texture": "#texture" },
"north": { "uv": [ 14, 0, 16, 11 ], "texture": "#texture" },
"south": { "uv": [ 14, 0, 16, 11 ], "texture": "#texture" },
"west": { "uv": [ 7, 0, 9, 11 ], "texture": "#texture" },
"east": { "uv": [ 7, 0, 9, 11 ], "texture": "#texture", "cullface": "east" }
}
},
{ "__comment": "Inner vertical post of left-hand gate door",
"from": [ 6, 6, 7 ],
"to": [ 8, 15, 9 ],
"faces": {
"down": { "uv": [ 6, 7, 8, 9 ], "texture": "#texture" },
"up": { "uv": [ 6, 7, 8, 9 ], "texture": "#texture" },
"north": { "uv": [ 6, 1, 8, 10 ], "texture": "#texture" },
"south": { "uv": [ 6, 1, 8, 10 ], "texture": "#texture" },
"west": { "uv": [ 7, 1, 9, 10 ], "texture": "#texture" },
"east": { "uv": [ 7, 1, 9, 10 ], "texture": "#texture" }
}
},
{ "__comment": "Inner vertical post of right-hand gate door",
"from": [ 8, 6, 7 ],
"to": [ 10, 15, 9 ],
"faces": {
"down": { "uv": [ 8, 7, 10, 9 ], "texture": "#texture" },
"up": { "uv": [ 8, 7, 10, 9 ], "texture": "#texture" },
"north": { "uv": [ 8, 1, 10, 10 ], "texture": "#texture" },
"south": { "uv": [ 8, 1, 10, 10 ], "texture": "#texture" },
"west": { "uv": [ 7, 1, 9, 10 ], "texture": "#texture" },
"east": { "uv": [ 7, 1, 9, 10 ], "texture": "#texture" }
}
},
{ "__comment": "Lower horizontal bar of left-hand gate door",
"from": [ 2, 6, 7 ],
"to": [ 6, 9, 9 ],
"faces": {
"down": { "uv": [ 2, 7, 6, 9 ], "texture": "#texture" },
"up": { "uv": [ 2, 7, 6, 9 ], "texture": "#texture" },
"north": { "uv": [ 2, 7, 6, 10 ], "texture": "#texture" },
"south": { "uv": [ 2, 7, 6, 10 ], "texture": "#texture" }
}
},
{ "__comment": "Upper horizontal bar of left-hand gate door",
"from": [ 2, 12, 7 ],
"to": [ 6, 15, 9 ],
"faces": {
"down": { "uv": [ 2, 7, 6, 9 ], "texture": "#texture" },
"up": { "uv": [ 2, 7, 6, 9 ], "texture": "#texture" },
"north": { "uv": [ 2, 1, 6, 4 ], "texture": "#texture" },
"south": { "uv": [ 2, 1, 6, 4 ], "texture": "#texture" }
}
},
{ "__comment": "Lower horizontal bar of right-hand gate door",
"from": [ 10, 6, 7 ],
"to": [ 14, 9, 9 ],
"faces": {
"down": { "uv": [ 10, 7, 14, 9 ], "texture": "#texture" },
"up": { "uv": [ 10, 7, 14, 9 ], "texture": "#texture" },
"north": { "uv": [ 10, 7, 14, 10 ], "texture": "#texture" },
"south": { "uv": [ 10, 7, 14, 10 ], "texture": "#texture" }
}
},
{ "__comment": "Upper horizontal bar of right-hand gate door",
"from": [ 10, 12, 7 ],
"to": [ 14, 15, 9 ],
"faces": {
"down": { "uv": [ 10, 7, 14, 9 ], "texture": "#texture" },
"up": { "uv": [ 10, 7, 14, 9 ], "texture": "#texture" },
"north": { "uv": [ 10, 1, 14, 4 ], "texture": "#texture" },
"south": { "uv": [ 10, 1, 14, 4 ], "texture": "#texture" }
}
}
]
}
window_open.json
{
"textures": {
"particle" : "#texture"
},
"elements": [
{ "__comment": "Left-hand post",
"from": [ 0, 5, 7 ],
"to": [ 2, 16, 9 ],
"faces": {
"down": { "uv": [ 0, 7, 2, 9 ], "texture": "#texture" },
"up": { "uv": [ 0, 7, 2, 9 ], "texture": "#texture" },
"north": { "uv": [ 0, 0, 2, 11 ], "texture": "#texture" },
"south": { "uv": [ 0, 0, 2, 11 ], "texture": "#texture" },
"west": { "uv": [ 7, 0, 9, 11 ], "texture": "#texture", "cullface": "west" },
"east": { "uv": [ 7, 0, 9, 11 ], "texture": "#texture" }
}
},
{ "__comment": "Right-hand post",
"from": [ 14, 5, 7 ],
"to": [ 16, 16, 9 ],
"faces": {
"down": { "uv": [ 14, 7, 16, 9 ], "texture": "#texture" },
"up": { "uv": [ 14, 7, 16, 9 ], "texture": "#texture" },
"north": { "uv": [ 14, 0, 16, 11 ], "texture": "#texture" },
"south": { "uv": [ 14, 0, 16, 11 ], "texture": "#texture" },
"west": { "uv": [ 7, 0, 9, 11 ], "texture": "#texture" },
"east": { "uv": [ 7, 0, 9, 11 ], "texture": "#texture", "cullface": "east" }
}
},
{ "__comment": "Inner vertical post of left-hand gate door",
"from": [ 0, 6, 13 ],
"to": [ 2, 15, 15 ],
"faces": {
"down": { "uv": [ 0, 13, 2, 15 ], "texture": "#texture" },
"up": { "uv": [ 0, 13, 2, 15 ], "texture": "#texture" },
"north": { "uv": [ 0, 1, 2, 10 ], "texture": "#texture" },
"south": { "uv": [ 0, 1, 2, 10 ], "texture": "#texture" },
"west": { "uv": [ 13, 1, 15, 10 ], "texture": "#texture" },
"east": { "uv": [ 13, 1, 15, 10 ], "texture": "#texture" }
}
},
{ "__comment": "Inner vertical post of right-hand gate door",
"from": [ 14, 6, 13 ],
"to": [ 16, 15, 15 ],
"faces": {
"down": { "uv": [ 14, 13, 16, 15 ], "texture": "#texture" },
"up": { "uv": [ 14, 13, 16, 15 ], "texture": "#texture" },
"north": { "uv": [ 14, 1, 16, 10 ], "texture": "#texture" },
"south": { "uv": [ 14, 1, 16, 10 ], "texture": "#texture" },
"west": { "uv": [ 13, 1, 15, 10 ], "texture": "#texture" },
"east": { "uv": [ 13, 1, 15, 10 ], "texture": "#texture" }
}
},
{ "__comment": "Lower horizontal bar of left-hand gate door",
"from": [ 0, 6, 9 ],
"to": [ 2, 9, 13 ],
"faces": {
"down": { "uv": [ 0, 9, 2, 13 ], "texture": "#texture" },
"up": { "uv": [ 0, 9, 2, 13 ], "texture": "#texture" },
"west": { "uv": [ 13, 7, 15, 10 ], "texture": "#texture" },
"east": { "uv": [ 13, 7, 15, 10 ], "texture": "#texture" }
}
},
{ "__comment": "Upper horizontal bar of left-hand gate door",
"from": [ 0, 12, 9 ],
"to": [ 2, 15, 13 ],
"faces": {
"down": { "uv": [ 0, 9, 2, 13 ], "texture": "#texture" },
"up": { "uv": [ 0, 9, 2, 13 ], "texture": "#texture" },
"west": { "uv": [ 13, 1, 15, 4 ], "texture": "#texture" },
"east": { "uv": [ 13, 1, 15, 4 ], "texture": "#texture" }
}
},
{ "__comment": "Lower horizontal bar of left-hand gate door",
"from": [ 14, 6, 9 ],
"to": [ 16, 9, 13 ],
"faces": {
"down": { "uv": [ 14, 9, 16, 13 ], "texture": "#texture" },
"up": { "uv": [ 14, 9, 16, 13 ], "texture": "#texture" },
"west": { "uv": [ 13, 7, 15, 10 ], "texture": "#texture" },
"east": { "uv": [ 13, 7, 15, 10 ], "texture": "#texture" }
}
},
{ "__comment": "Upper horizontal bar of left-hand gate door",
"from": [ 14, 12, 9 ],
"to": [ 16, 15, 13 ],
"faces": {
"down": { "uv": [ 14, 9, 16, 13 ], "texture": "#texture" },
"up": { "uv": [ 14, 9, 16, 13 ], "texture": "#texture" },
"west": { "uv": [ 13, 1, 15, 4 ], "texture": "#texture" },
"east": { "uv": [ 13, 1, 15, 4 ], "texture": "#texture" }
}
}
]
}
item_window.json
{
"parent": "wm:block/oak_window_closed",
"display": {
"thirdperson": {
"rotation": [ 0, -90, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"firstperson": {
"rotation": [ 0, 90, 0 ],
"translation": [ 0, 0, 0 ],
"scale": [ 1, 1, 1 ]
}
}
}
eclips file structure
http://s21.postimg.org/ez3o2le2f/exlips_explorer.png[/img]
any help on this matter will be greatly appreciated I have searched high and low for the answer and cannot find a solution my goal is to create some basic windows using the functions of a gate as you can see in the image I have tried to use my own texture and still I received the same errors I have checked and double checked the spellings of everything and still no avail, I have even tried converting this:
"facing=east,in_wall=true,open=false": { "model": "wm:oak_wall_window_closed", "y": 270, "uvlock":
to this:
"facing=east,in_wall=true,open=false,powered=false": { "model": "wm:oak_wall_window_closed", "y": 270, "uvlock":
and it produces same error
please help!