Added treated wood crafting table. Added treated wood stool.

This commit is contained in:
stfwi 2019-03-03 11:38:23 +01:00
parent 839a56f4cc
commit 5614310fb6
22 changed files with 615 additions and 27 deletions

View file

@ -3,7 +3,7 @@ org.gradle.daemon=false
org.gradle.jvmargs=-Xmx8G
version_minecraft=1.12.2
version_forge=14.23.5.2768
version_engineersdecor=1.0.1-b1
version_engineersdecor=1.0.1-b2
#
# jar signing data loaded from signing.properties in the project root.
#

View file

@ -1,7 +1,7 @@
{
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
"1.12.2": {
"1.0.1-b2": "[F] Fixed ladder bounding boxes to allow climbing connected trap doors (issue #6, thanks to Forgilageord).",
"1.0.1-b2": "[A] Added treated wood crafting table.\n[A] Added treated stool.\n[F] Fixed ladder bounding boxes to allow climbing connected trap doors (issue #6, thanks to Forgilageord).\n[M] Improved wall-block connections (wall elements only connect to other walls or gates, as well as to solid blocks if these blocks are in a straight line with at least two wall elements).\n[M] Decor walls are defined \"solid\" on top, so that e.g. torches and redstone tracks can be placed on them.",
"1.0.1-b1": "[F] Fixed missing condition for ie:stone_deco in recipe constants.\n[A] Added clinker brick wall.",
"1.0.0": "[R] Release based on v1.0.0-b4",
"1.0.0-b4": "[F] Fixed vanished recipe for the rebar concrete wall.\n[A] Concrete wall, material: IE concrete.",

View file

@ -10,8 +10,15 @@ Mod sources for Minecraft version 1.12.2.
----
## Revision history
- v1.0.1-b2 [F] Fixed ladder bounding boxes to allow climbing connected trap doors
- v1.0.1-b2 [A] Added treated wood crafting table.
[A] Added treated stool.
[F] Fixed ladder bounding boxes to allow climbing connected trap doors
(issue #6, thanks to Forgilageord).
[M] Improved wall-block connections (wall elements only connect to other
walls or gates, as well as to solid blocks if these blocks are in
a straight line with at least two wall elements).
[M] Decor walls are defined "solid" on top, so that e.g. torches and
redstone tracks can be placed on them.
- v1.0.1-b1 [F] Fixed missing condition for ie:stone_deco in recipe constants.
[A] Added clinker brick wall.

View file

@ -8,6 +8,14 @@
*/
package wile.engineersdecor;
import net.minecraft.client.multiplayer.WorldClient;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.network.IGuiHandler;
import net.minecraftforge.fml.common.network.NetworkRegistry;
import wile.engineersdecor.blocks.BlockDecorCraftingTable;
import wile.engineersdecor.detail.ModConfig;
import wile.engineersdecor.blocks.ModBlocks;
import net.minecraftforge.client.event.ModelRegistryEvent;
@ -75,7 +83,10 @@ public class ModEngineersDecor
@Mod.EventHandler
public void init(FMLInitializationEvent event)
{ proxy.init(event); }
{
proxy.init(event);
NetworkRegistry.INSTANCE.registerGuiHandler(this, new ModEngineersDecor.GuiHandler());
}
@Mod.EventHandler
public void postInit(FMLPostInitializationEvent event)
@ -105,4 +116,35 @@ public class ModEngineersDecor
{ return new ItemStack(ModBlocks.TREATED_WOOD_LADDER); }
});
public static final class GuiHandler implements IGuiHandler
{
public static final int GUIID_CRAFTING_TABLE = 213101;
@Override
public Object getServerGuiElement(final int guiid, final EntityPlayer player, final World world, int x, int y, int z)
{
final BlockPos pos = new BlockPos(x,y,z);
final TileEntity te = world.getTileEntity(pos);
switch(guiid) {
case GUIID_CRAFTING_TABLE:
return (te instanceof BlockDecorCraftingTable.BEntity) ? (new BlockDecorCraftingTable.BContainer(player.inventory, world, pos)) : null;
}
return null;
}
@SideOnly(Side.CLIENT)
@Override
public Object getClientGuiElement(final int guiid, final EntityPlayer player, final World world, int x, int y, int z)
{
final BlockPos pos = new BlockPos(x,y,z);
final TileEntity te = (world instanceof WorldClient) ? world.getTileEntity(pos) : null;
switch(guiid) {
case GUIID_CRAFTING_TABLE:
return (te instanceof BlockDecorCraftingTable.BEntity) ? (new BlockDecorCraftingTable.BGuiCrafting(player.inventory, world, pos)) : null;
}
return null;
}
}
}

View file

@ -0,0 +1,26 @@
/*
* @file BlockDecorFull.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2019 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Full block characteristics class.
*/
package wile.engineersdecor.blocks;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.util.math.AxisAlignedBB;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class BlockDecorChair extends BlockDecorDirected
{
public BlockDecorChair(@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);
setLightOpacity(0);
}
}

View file

@ -0,0 +1,131 @@
/*
* @file BlockDecorFull.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2019 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Full block characteristics class.
*/
package wile.engineersdecor.blocks;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.*;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import wile.engineersdecor.ModEngineersDecor;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class BlockDecorCraftingTable extends BlockDecorDirected
{
public BlockDecorCraftingTable(@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);
setLightOpacity(0);
}
@Override
@SuppressWarnings("deprecation")
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
{ return getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()); }
@Override
public boolean hasTileEntity(IBlockState state)
{ return true; }
@Nullable
public TileEntity createTileEntity(World world, IBlockState state)
{ return new BlockDecorCraftingTable.BEntity(); }
@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) return true;
player.openGui(ModEngineersDecor.instance, ModEngineersDecor.GuiHandler.GUIID_CRAFTING_TABLE, world, pos.getX(), pos.getY(), pos.getZ());
return true;
}
//--------------------------------------------------------------------------------------------------------------------
// TE
//--------------------------------------------------------------------------------------------------------------------
public static class BEntity extends TileEntity
{
}
//--------------------------------------------------------------------------------------------------------------------
// Container
//--------------------------------------------------------------------------------------------------------------------
public static class BContainer extends ContainerWorkbench
{
private World world;
private BlockPos pos;
private EntityPlayer player;
public BContainer(InventoryPlayer inv, World world, BlockPos pos)
{
super(inv, world, pos);
this.world = world;
this.pos = pos;
this.player = inv.player;
}
@Override
public boolean canInteractWith(EntityPlayer playerIn)
{ return (world.getBlockState(this.pos).getBlock() instanceof BlockDecorCraftingTable) && (playerIn.getDistanceSq(this.pos) <= 8*8); }
@Override
public void onCraftMatrixChanged(IInventory inv)
{
try {
slotChangedCraftingGrid(this.world, player, this.craftMatrix, this.craftResult);
} catch(Throwable exc) {
ModEngineersDecor.logger.error("Recipe failed:", exc);
}
}
}
//--------------------------------------------------------------------------------------------------------------------
// GUI
//--------------------------------------------------------------------------------------------------------------------
@SideOnly(Side.CLIENT)
public static class BGuiCrafting extends GuiContainer
{
public BGuiCrafting(InventoryPlayer playerInventory, World world, BlockPos pos)
{ super(new BContainer(playerInventory, world, pos)); }
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks)
{ super.drawScreen(mouseX, mouseY, partialTicks); renderHoveredToolTip(mouseX, mouseY); }
@Override
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
{}
@Override
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
{
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.getTextureManager().bindTexture(new ResourceLocation(ModEngineersDecor.MODID, "textures/gui/treated_wood_crafting_table.png"));
drawTexturedModalRect(((this.width - this.xSize)/2), ((this.height - this.ySize)/2), 0, 0, this.xSize, this.ySize);
}
}
}

View file

@ -105,7 +105,7 @@ public class BlockDecorWall extends BlockDecor
@Override
@SuppressWarnings("deprecation")
public boolean isPassable(IBlockAccess worldIn, BlockPos pos)
public boolean isPassable(IBlockAccess world, BlockPos pos)
{ return false; }
@Override
@ -118,13 +118,15 @@ public class BlockDecorWall extends BlockDecor
public boolean isNormalCube(IBlockState state)
{ return false; }
private boolean canConnectTo(IBlockAccess worldIn, BlockPos pos, EnumFacing p_176253_3_)
private boolean canConnectTo(IBlockAccess world, BlockPos pos, BlockPos other, EnumFacing facing)
{
IBlockState iblockstate = worldIn.getBlockState(pos);
Block block = iblockstate.getBlock();
BlockFaceShape blockfaceshape = iblockstate.getBlockFaceShape(worldIn, pos, p_176253_3_);
boolean flag = blockfaceshape == BlockFaceShape.MIDDLE_POLE_THICK || blockfaceshape == BlockFaceShape.MIDDLE_POLE && block instanceof BlockFenceGate;
return !isExcepBlockForAttachWithPiston(block) && blockfaceshape == BlockFaceShape.SOLID || flag;
final IBlockState state = world.getBlockState(other);
final Block block = state.getBlock();
if((block instanceof BlockDecorWall) || (block instanceof BlockFenceGate)) return true;
if(world.getBlockState(pos.offset(facing)).getBlock()!=this) return false;
if(block instanceof BlockFence) return true;
final BlockFaceShape shp = state.getBlockFaceShape(world, other, facing);
return (shp == BlockFaceShape.SOLID) && (!isExcepBlockForAttachWithPiston(block));
}
protected static boolean isExcepBlockForAttachWithPiston(Block b)
@ -148,12 +150,12 @@ public class BlockDecorWall extends BlockDecor
@Override
@SuppressWarnings("deprecation")
public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos)
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos)
{
boolean n = canWallConnectTo(worldIn, pos, EnumFacing.NORTH);
boolean e = canWallConnectTo(worldIn, pos, EnumFacing.EAST);
boolean s = canWallConnectTo(worldIn, pos, EnumFacing.SOUTH);
boolean w = canWallConnectTo(worldIn, pos, EnumFacing.WEST);
boolean n = canWallConnectTo(world, pos, EnumFacing.NORTH);
boolean e = canWallConnectTo(world, pos, EnumFacing.EAST);
boolean s = canWallConnectTo(world, pos, EnumFacing.SOUTH);
boolean w = canWallConnectTo(world, pos, EnumFacing.WEST);
boolean nopole = (n && s && !e && !w) || (!n && !s && e && w);
return state.withProperty(UP,!nopole).withProperty(NORTH, n).withProperty(EAST, e).withProperty(SOUTH, s).withProperty(WEST, w);
}
@ -164,17 +166,13 @@ public class BlockDecorWall extends BlockDecor
@Override
@SuppressWarnings("deprecation")
public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face)
{ return ((face!=EnumFacing.UP) && (face!=EnumFacing.DOWN)) ? (BlockFaceShape.MIDDLE_POLE_THICK) : (BlockFaceShape.CENTER_BIG); }
public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, BlockPos pos, EnumFacing face)
{ return (face==EnumFacing.UP) ? (BlockFaceShape.SOLID) : ((face!=EnumFacing.DOWN) ? (BlockFaceShape.MIDDLE_POLE_THICK) : (BlockFaceShape.CENTER_BIG)); }
@Override
public boolean canBeConnectedTo(IBlockAccess world, BlockPos pos, EnumFacing facing)
{ return canConnectTo(world, pos.offset(facing), facing.getOpposite()); }
{ return canConnectTo(world, pos, pos.offset(facing), facing.getOpposite()); }
private boolean canWallConnectTo(IBlockAccess world, BlockPos pos, EnumFacing facing)
{
BlockPos other = pos.offset(facing);
Block block = world.getBlockState(other).getBlock();
return block.canBeConnectedTo(world, other, facing.getOpposite()) || canConnectTo(world, other, facing.getOpposite());
}
{ return canConnectTo(world, pos, pos.offset(facing), facing.getOpposite()); }
}

View file

@ -17,6 +17,7 @@ import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.registry.GameRegistry;
import wile.engineersdecor.ModEngineersDecor;
import wile.engineersdecor.detail.ModAuxiliaries;
import wile.engineersdecor.detail.ModConfig;
@ -66,6 +67,21 @@ public class ModBlocks
BlockDecor.CFG_CUTOUT,
Material.WOOD, 1.0f, 15f, SoundType.WOOD
);
public static final BlockDecorChair TREATED_WOOD_STOOL = new BlockDecorChair(
"treated_wood_stool",
BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL_PLACEMENT|BlockDecor.CFG_HORIZIONTAL,
Material.WOOD, 1.0f, 15f, SoundType.WOOD,
ModAuxiliaries.getPixeledAABB(4.1,0,4.1, 11.8,8.8,11.8)
);
public static final BlockDecorCraftingTable TREATED_WOOD_CRAFTING_TABLE = new BlockDecorCraftingTable(
"treated_wood_crafting_table",
BlockDecor.CFG_CUTOUT|BlockDecor.CFG_HORIZIONTAL_PLACEMENT|BlockDecor.CFG_HORIZIONTAL,
Material.WOOD, 1.0f, 15f, SoundType.WOOD,
ModAuxiliaries.getPixeledAABB(0.5,0,3, 15.5,15.125,15.5)
);
public static final BlockDecorStairs IRON_SHEET_ROOF = new BlockDecorStairs("iron_sheet_roof", IRON_SHEET_ROOF_FULLBLOCK.getDefaultState());
@ -83,6 +99,8 @@ public class ModBlocks
REBAR_CONCRETE_STAIRS,
REBAR_CONCRETE_WALL,
CLINKER_BRICK_WALL,
TREATED_WOOD_STOOL,
TREATED_WOOD_CRAFTING_TABLE,
};
private static final Block ieDependentBlocks[] = {
@ -113,6 +131,8 @@ public class ModBlocks
for(Block e:allBlocks) registeredBlocks.add(e);
for(Block e:registeredBlocks) event.getRegistry().register(e);
ModEngineersDecor.logger.info("Registered " + Integer.toString(registeredBlocks.size()) + " blocks.");
// TEs
GameRegistry.registerTileEntity(BlockDecorCraftingTable.BEntity.class, new ResourceLocation(ModEngineersDecor.MODID, "te_crafting_table"));
}
// Invoked from ClientProxy.registerModels()

View file

@ -0,0 +1,11 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:crafting_table/treated_wood_crafting_table_model"
},
"variants": {
"normal": [{}],
"inventory": [{}],
"facing": { "north": {"y":0}, "south": {"y":180}, "west": {"y":-90}, "east": {"y":90}, "up":{}, "down":{} }
}
}

View file

@ -0,0 +1,15 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:furniture/treated_wood_stool_model",
"textures": {
"o": "engineersdecor:blocks/iestyle/treated_wood_framed_texture",
"particle": "engineersdecor:blocks/iestyle/treated_wood_framed_texture"
}
},
"variants": {
"normal": [{}],
"inventory": [{}],
"facing": { "north": {"y":0}, "south": {"y":0}, "west": {"y":90}, "east": {"y":90}, "up":{}, "down":{} }
}
}

View file

@ -60,7 +60,11 @@ tile.engineersdecor.treated_wood_pole.help=§6Straight pole fragment with the di
# Furniture
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.treated_wood_table.name=Treated wood table
tile.engineersdecor.treated_wood_table.help=§6Robust four-legged wood table.
tile.engineersdecor.treated_wood_table.help=§6Robust four-legged wood table.§r\n Indoor and outdoor use.
tile.engineersdecor.treated_wood_stool.name=Treated wood stool
tile.engineersdecor.treated_wood_stool.help=§6Robust wood stool.§r\n Indoor and outdoor use.
tile.engineersdecor.treated_wood_crafting_table.name=Treated wood crafting table
tile.engineersdecor.treated_wood_crafting_table.help=§6Robust and weather-proof.§r
# EOF
#-----------------------------------------------------------------------------------------------------------

View file

@ -0,0 +1,116 @@
{
"parent": "block/cube",
"textures": {
"side": "engineersdecor:blocks/crafting_table/treated_wood_crafting_table_side",
"top": "engineersdecor:blocks/crafting_table/treated_wood_crafting_table_top",
"particle": "engineersdecor:blocks/crafting_table/treated_wood_crafting_table_top",
"front": "engineersdecor:blocks/crafting_table/treated_wood_crafting_table_front",
"wood": "engineersdecor:blocks/iestyle/treated_wood"
},
"elements": [
{
"from": [0.5, 0, 3],
"to": [2.5, 13.25, 6],
"faces": {
"north": {"uv": [13.5, 2.75, 15.5, 16], "texture": "#front"},
"east": {"uv": [10, 2, 13, 16], "texture": "#side"},
"south": {"uv": [0.5, 2.75, 2.375, 16], "texture": "#side"},
"west": {"uv": [0, 2, 3, 16], "texture": "#side"},
"down": {"uv": [0.5, 10, 2.375, 13], "texture": "#wood"}
}
},
{
"from": [7.5, 0, 3],
"to": [15.5, 13.25, 15.75],
"faces": {
"north": {"uv": [0.5, 2.75, 8.5, 16], "texture": "#front"},
"east": {"uv": [0, 2, 13, 16], "texture": "#side"},
"south": {"uv": [5, 2, 13, 16], "texture": "#side"},
"west": {"uv": [0, 2, 13, 16], "texture": "#side"},
"down": {"uv": [7.5, 0.25, 15.5, 13], "texture": "#wood"}
}
},
{
"from": [0.5, 0, 12.75],
"to": [2.5, 13.25, 15.5],
"faces": {
"north": {"uv": [9, 2, 10.875, 15.25], "texture": "#side"},
"east": {"uv": [0, 2, 3, 16], "texture": "#side"},
"south": {"uv": [0, 2, 1.875, 16], "texture": "#side"},
"west": {"uv": [10, 2, 13, 16], "texture": "#side"},
"down": {"uv": [0.5, 0.25, 2.375, 3.25], "texture": "#wood"}
}
},
{
"from": [0.5, 0, 6],
"to": [2.5, 2, 12.75],
"faces": {
"east": {"uv": [3.25, 14, 10, 16], "texture": "#side"},
"west": {"uv": [3, 14, 9.75, 16], "texture": "#side"},
"up": {"uv": [0.5, 6, 2.375, 12.75], "texture": "#side"},
"down": {"uv": [0.5, 3.25, 2.375, 10], "texture": "#wood"}
}
},
{
"from": [0.5, 11.25, 6],
"to": [2.5, 13.25, 12.75],
"faces": {
"east": {"uv": [3, 2, 9.75, 4], "texture": "#side"},
"west": {"uv": [2, 2, 8.75, 4], "texture": "#side"},
"down": {"uv": [0.5, 3.25, 2.375, 10], "texture": "#side"}
}
},
{
"from": [0.125, 13.25, 1.125],
"to": [15.875, 13.375, 16],
"faces": {
"north": {"uv": [0.125, 0.625, 15.875, 1.75], "texture": "#top"},
"east": {"uv": [1, 0, 15.125, 1.125], "texture": "#top"},
"south": {"uv": [0, 0, 15.75, 1.125], "texture": "#top"},
"west": {"uv": [1, 0, 15.125, 1.125], "texture": "#top"},
"down": {"uv": [0.125, 0, 15.875, 14.125], "texture": "#wood"}
}
},
{
"from": [0, 13.375, 1],
"to": [16, 15.125, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1.75], "texture": "#top"},
"east": {"uv": [1, 0, 15.25, 1.75], "texture": "#top"},
"south": {"uv": [0, 0, 16, 1.75], "texture": "#top"},
"west": {"uv": [0, 0, 14.25, 1.75], "texture": "#top"},
"up": {"uv": [0, 1.75, 16, 16], "texture": "#top"},
"down": {"uv": [0, 2, 13, 16], "texture": "#side"}
}
},
{
"from": [0.125, 15.125, 1.125],
"to": [15.875, 15.25, 15.875],
"faces": {
"north": {"uv": [0, 0.75, 16, 0.875], "texture": "#top"},
"east": {"uv": [0, 0.75, 14.125, 0.875], "texture": "#top"},
"south": {"uv": [0, 0.75, 16, 0.875], "texture": "#top"},
"west": {"uv": [1.875, 0.75, 16, 0.875], "texture": "#top"},
"up": {"uv": [0.125, 1.125, 15.875, 15.875], "texture": "#top"}
}
}
],
"display": {
"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]
}
},
"groups": [0, 1, 2, 3, 4,
{
"name": "group",
"children": [5, 6, 7]
}
]
}

View file

@ -0,0 +1,144 @@
{
"credit": "I made this with the Blockbench",
"parent": "block/cube",
"textures": {
"o": "engineersdecor:blocks/iestyle/treated_wood_framed_texture",
"particle": "engineersdecor:blocks/iestyle/treated_wood_framed_texture"
},
"elements": [
{
"from": [7, 0, 7],
"to": [9, 7, 9],
"faces": {
"north": {"uv": [7, 9, 9, 16], "texture": "#o"},
"east": {"uv": [7, 9, 9, 16], "texture": "#o"},
"south": {"uv": [7, 9, 9, 16], "texture": "#o"},
"west": {"uv": [7, 9, 9, 16], "texture": "#o"},
"down": {"uv": [7, 7, 9, 9], "texture": "#o", "cullface": "down"}
}
},
{
"from": [9.375, 0.375, 7.5],
"to": [10.375, 4.375, 8.5],
"rotation": {"angle": 45, "axis": "z", "origin": [10.5, 2.375, 8]},
"faces": {
"north": {"uv": [5, 11, 6, 15], "texture": "#o"},
"east": {"uv": [7.5, 9, 9.5, 15], "texture": "#o"},
"south": {"uv": [10, 10, 12, 15], "texture": "#o"},
"west": {"uv": [7.5, 11, 8.5, 15], "texture": "#o"}
}
},
{
"from": [4, 7, 4],
"to": [12, 8.875, 12],
"faces": {
"north": {"uv": [4, 7.125, 12, 9], "texture": "#o"},
"east": {"uv": [4, 7.125, 12, 9], "texture": "#o"},
"south": {"uv": [4, 7.125, 12, 9], "texture": "#o"},
"west": {"uv": [4, 7.125, 12, 9], "texture": "#o"},
"up": {"uv": [4, 4, 12, 12], "texture": "#o"},
"down": {"uv": [4, 4, 12, 12], "texture": "#o"}
}
},
{
"from": [4, 8.875, 4.125],
"to": [11.875, 9, 11.875],
"faces": {
"north": {"uv": [0.25, 0, 15.75, 0.125], "texture": "#o"},
"east": {"uv": [0.25, 0, 15.75, 0.125], "texture": "#o"},
"south": {"uv": [0.25, 0, 15.75, 0.125], "texture": "#o"},
"west": {"uv": [0.25, 0, 15.75, 0.125], "texture": "#o"},
"up": {"uv": [0.25, 0.25, 15.75, 15.75], "texture": "#o"}
}
},
{
"from": [9, 0, 7],
"to": [12, 1, 9],
"faces": {
"north": {"uv": [4, 15, 7, 16], "texture": "#o"},
"east": {"uv": [7, 15, 9, 16], "texture": "#o"},
"south": {"uv": [9, 15, 12, 16], "texture": "#o"},
"up": {"uv": [9, 7, 12, 9], "texture": "#o"},
"down": {"uv": [9, 7, 12, 9], "texture": "#o"}
}
},
{
"from": [4, 0, 7],
"to": [7, 1, 9],
"faces": {
"north": {"uv": [9, 15, 12, 16], "texture": "#o"},
"south": {"uv": [4, 15, 7, 16], "texture": "#o"},
"west": {"uv": [7, 15, 9, 16], "texture": "#o"},
"up": {"uv": [4, 7, 7, 9], "texture": "#o"},
"down": {"uv": [4, 7, 7, 9], "texture": "#o"}
}
},
{
"from": [7, 0, 4],
"to": [9, 1, 7],
"faces": {
"north": {"uv": [7, 15, 9, 16], "texture": "#o"},
"east": {"uv": [9, 15, 12, 16], "texture": "#o"},
"west": {"uv": [4, 15, 7, 16], "texture": "#o"},
"up": {"uv": [7, 4, 9, 7], "rotation": 270, "texture": "#o"},
"down": {"uv": [7, 9, 9, 12], "rotation": 90, "texture": "#o"}
}
},
{
"from": [7, 0, 9],
"to": [9, 1, 12],
"faces": {
"east": {"uv": [4, 15, 7, 16], "texture": "#o"},
"south": {"uv": [7, 15, 9, 16], "texture": "#o"},
"west": {"uv": [9, 15, 12, 16], "texture": "#o"},
"up": {"uv": [7, 9, 9, 12], "rotation": 270, "texture": "#o"},
"down": {"uv": [7, 4, 9, 7], "rotation": 90, "texture": "#o"}
}
},
{
"from": [5.625, 0.375, 7.5],
"to": [6.625, 4.375, 8.5],
"rotation": {"angle": -45, "axis": "z", "origin": [5.5, 2.375, 8]},
"faces": {
"north": {"uv": [5, 11, 6, 15], "texture": "#o"},
"east": {"uv": [7.5, 9, 9.5, 15], "texture": "#o"},
"south": {"uv": [10, 10, 12, 15], "texture": "#o"},
"west": {"uv": [7.5, 11, 8.5, 15], "texture": "#o"}
}
},
{
"from": [7.5, 0.375, 9.375],
"to": [8.5, 4.375, 10.375],
"rotation": {"angle": -45, "axis": "x", "origin": [8, 2.375, 10.5]},
"faces": {
"north": {"uv": [5, 11, 6, 15], "texture": "#o"},
"east": {"uv": [7.5, 9, 9.5, 15], "texture": "#o"},
"south": {"uv": [10, 10, 12, 15], "texture": "#o"},
"west": {"uv": [7.5, 11, 8.5, 15], "texture": "#o"}
}
},
{
"from": [7.5, 0.375, 5.625],
"to": [8.5, 4.375, 6.625],
"rotation": {"angle": 45, "axis": "x", "origin": [8, 2.375, 5.5]},
"faces": {
"north": {"uv": [5, 11, 6, 15], "texture": "#o"},
"east": {"uv": [7.5, 9, 9.5, 15], "texture": "#o"},
"south": {"uv": [10, 10, 12, 15], "texture": "#o"},
"west": {"uv": [7.5, 11, 8.5, 15], "texture": "#o"}
}
}
],
"display": {
"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]
}
}
}

View file

@ -136,6 +136,16 @@
"data": 5
},
"name": "blockConcreteIe"
},
{
"conditions": [
{ "type": "minecraft:item_exists", "item": "immersiveengineering:wooden_device0" }
],
"ingredient": {
"item": "immersiveengineering:wooden_device0",
"data": 0
},
"name": "crateTreatedWood"
}
]

View file

@ -0,0 +1,32 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:treated_wood_crafting_table",
"required": ["immersiveengineering:material"]
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
"SS",
"PC"
],
"key": {
"S": {
"item": "#slabTreatedWood",
"data": 0
},
"P": {
"item": "#plankTreatedWood",
"data": 0
},
"C": {
"item": "#crateTreatedWood",
"data": 0
}
},
"result": {
"item": "engineersdecor:treated_wood_crafting_table",
"count": 1
}
}

View file

@ -0,0 +1,29 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:treated_wood_stool",
"required": ["immersiveengineering:material"]
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
" ",
"WWW",
" S "
],
"key": {
"W": {
"item": "#slabTreatedWood",
"data": 0
},
"S": {
"item": "engineersdecor:treated_wood_pole",
"data": 0
}
},
"result": {
"item": "engineersdecor:treated_wood_stool",
"count": 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

View file

@ -12,7 +12,9 @@ Mod components derived/inspired by IE:
- Style color scheme of treated wood/steel/concrete to match IE color scheme.
- Recipe _constants.json file (for using IE items as ingredients)
IE components referenced in this mod:
IE components used in this mod:
- immersiveengineering:textures/block/stone_decoration_concrete.png (for IE
concrete wall).
- Image pattern of wooden GUIs (background, slots, etc.).

View file

@ -1,6 +1,7 @@
{
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
"1.12.2": {
"1.0.1-b2": "[A] Added treated wood crafting table.\n[A] Added treated stool.\n[F] Fixed ladder bounding boxes to allow climbing connected trap doors (issue #6, thanks to Forgilageord).\n[M] Improved wall-block connections (wall elements only connect to other walls or gates, as well as to solid blocks if these blocks are in a straight line with at least two wall elements).\n[M] Decor walls are defined \"solid\" on top, so that e.g. torches and redstone tracks can be placed on them.",
"1.0.1-b1": "[F] Fixed missing condition for ie:stone_deco in recipe constants.\n[A] Added clinker brick wall.",
"1.0.0": "[R] Release based on v1.0.0-b4",
"1.0.0-b4": "[F] Fixed vanished recipe for the rebar concrete wall.\n[A] Concrete wall, material: IE concrete.",
@ -13,7 +14,7 @@
},
"promos": {
"1.12.2-recommended": "1.0.0",
"1.12.2-latest": "1.0.1-b1",
"1.12.2-latest": "1.0.1-b2",
"1.13.2-recommended": "",
"1.13.2-latest": "1.0.0-a1"
}