Initial sources added.

This commit is contained in:
stfwi 2019-02-10 17:00:38 +01:00
parent 67d3b6e922
commit f8aaf132a6
77 changed files with 2977 additions and 0 deletions

View file

@ -0,0 +1,108 @@
/*
* @file ModEngineersDecor.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2019 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Main mod class.
*/
package wile.engineersdecor;
import wile.engineersdecor.detail.ModConfig;
import wile.engineersdecor.blocks.ModBlocks;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import org.apache.logging.log4j.Logger;
import javax.annotation.Nonnull;
@Mod(
modid = ModEngineersDecor.MODID,
name = ModEngineersDecor.MODNAME,
version = ModEngineersDecor.MODVERSION,
dependencies = "required-after:forge@[14.23.5.2768,)",
useMetadata = true,
updateJSON = "https://raw.githubusercontent.com/stfwi/engineersdecor/develop/meta/update.json",
certificateFingerprint = ((ModEngineersDecor.MODFINGERPRINT==("@"+"MOD_SIGNSHA1"+"@")) ? "" : ModEngineersDecor.MODFINGERPRINT)
)
@SuppressWarnings({"unused", "ConstantConditions"})
public class ModEngineersDecor
{
public static final String MODID = "engineersdecor";
public static final String MODNAME = "Engineer's Decor";
public static final String MODVERSION = "@MOD_VERSION@";
public static final String MODMCVERSION = "@MOD_MCVERSION@";
public static final String MODFINGERPRINT = "@MOD_SIGNSHA1@";
public static final String MODBUILDID = "@MOD_BUILDID@";
public static Logger logger;
@Mod.Instance
public static ModEngineersDecor instance;
@SidedProxy(clientSide = "wile.engineersdecor.detail.ClientProxy", serverSide = "wile.engineersdecor.detail.ServerProxy")
public static IProxy proxy;
public interface IProxy
{
default void preInit(FMLPreInitializationEvent e) {}
default void init(FMLInitializationEvent e) {}
default void postInit(FMLPostInitializationEvent e) {}
}
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event)
{
logger = event.getModLog();
logger.info(MODNAME + ": Version " + MODMCVERSION + "-" + MODVERSION + ( (MODBUILDID=="@"+"MOD_BUILDID"+"@") ? "" : (" "+MODBUILDID) ) + ".");
if(MODFINGERPRINT=="@"+"MOD_SIGNSHA1"+"@") {
logger.warn(MODNAME + ": Mod is NOT signed by the author.");
} else {
logger.info(MODNAME + ": Found valid fingerprint " + MODFINGERPRINT + ".");
}
proxy.preInit(event);
}
@Mod.EventHandler
public void init(FMLInitializationEvent event)
{ proxy.init(event); }
@Mod.EventHandler
public void postInit(FMLPostInitializationEvent event)
{ ModConfig.onPostInit(event); proxy.postInit(event); }
@Mod.EventBusSubscriber
public static final class RegistrationSubscriptions
{
@SubscribeEvent
public static void registerBlocks(RegistryEvent.Register<Block> event)
{ ModBlocks.registerBlocks(event); }
@SubscribeEvent
public static void registerItems(RegistryEvent.Register<Item> event)
{ ModBlocks.registerItemBlocks(event); }
@SideOnly(Side.CLIENT)
@SubscribeEvent
public static void registerModels(ModelRegistryEvent event)
{ ModBlocks.initModels(); }
}
public static final CreativeTabs CREATIVE_TAB_ENGINEERSDECOR = (new CreativeTabs("tabengineersdecor") {
@Override
@SideOnly(Side.CLIENT)
public @Nonnull ItemStack createIcon()
{ return new ItemStack(ModBlocks.CLINKER_BRICK_WALL); }
});
}

View file

@ -0,0 +1,159 @@
/*
* @file BlockDecorFull.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2019 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Common functionality class for decor blocks.
* Mainly needed for:
* - MC block defaults.
* - Tooltip functionality
* - Model initialisation
*/
package wile.engineersdecor.blocks;
import net.minecraft.block.SoundType;
import net.minecraft.util.*;
import wile.engineersdecor.ModEngineersDecor;
import wile.engineersdecor.detail.ModAuxiliaries;
import net.minecraft.block.Block;
import net.minecraft.block.material.EnumPushReaction;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraft.item.ItemStack;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.List;
public class BlockDecor extends Block
{
public final long config;
public static final long CFG_CUTOUT = 0x0000000000000001L;
public BlockDecor(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound)
{
super((material!=null) ? (material) : (Material.IRON));
setCreativeTab(ModEngineersDecor.CREATIVE_TAB_ENGINEERSDECOR);
setRegistryName(ModEngineersDecor.MODID, registryName);
setTranslationKey(ModEngineersDecor.MODID + "." + registryName);
setTickRandomly(false);
setHardness((hardness > 0) ? hardness : 5.0f);
setResistance((resistance > 0) ? resistance : 10.0f);
setSoundType((sound==null) ? SoundType.STONE : sound);
this.config = config;
}
@Override
@Nullable
@SuppressWarnings("deprecation")
public AxisAlignedBB getCollisionBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos)
{ return getBoundingBox(state, world, pos); }
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, @Nullable World world, List<String> tooltip, ITooltipFlag flag)
{ ModAuxiliaries.Tooltip.addInformation(stack, world, tooltip, flag, true); }
@Override
@SideOnly(Side.CLIENT)
public BlockRenderLayer getRenderLayer()
{ return ((config & CFG_CUTOUT)!=0) ? BlockRenderLayer.CUTOUT : BlockRenderLayer.SOLID; }
@Override
@SuppressWarnings("deprecation")
public boolean isFullCube(IBlockState state)
{ return ((config & CFG_CUTOUT)==0); }
@Override
@SuppressWarnings("deprecation")
public boolean isNormalCube(IBlockState state)
{ return ((config & CFG_CUTOUT)==0); }
@Override
@SuppressWarnings("deprecation")
public boolean isOpaqueCube(IBlockState state)
{ return ((config & CFG_CUTOUT)==0); }
@Override
public boolean canSpawnInBlock()
{ return false; }
@Override
@SuppressWarnings("deprecation")
public EnumPushReaction getPushReaction(IBlockState state)
{ return EnumPushReaction.NORMAL; }
@Override
@SuppressWarnings("deprecation")
public IBlockState getStateFromMeta(int meta)
{ return getDefaultState(); }
@Override
public int getMetaFromState(IBlockState state)
{ return 0; }
@Override
protected BlockStateContainer createBlockState()
{ return new BlockStateContainer(this); }
@Override
@SuppressWarnings("deprecation")
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos)
{ return state; }
@Override
@SuppressWarnings("deprecation")
public IBlockState withRotation(IBlockState state, Rotation rot)
{ return state; }
@Override
@SuppressWarnings("deprecation")
public IBlockState withMirror(IBlockState state, Mirror mirrorIn)
{ return state; }
@Override
public boolean hasTileEntity(IBlockState state)
{ return false; }
@Override
public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
{}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
{ return false; }
@Override
public void onBlockClicked(World world, BlockPos pos, EntityPlayer player)
{}
@Override
@SuppressWarnings("deprecation")
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos)
{}
@Override
public boolean canPlaceBlockOnSide(World world, BlockPos pos, EnumFacing side)
{ return super.canPlaceBlockOnSide(world, pos, side); }
@Override
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer, EnumHand hand)
{ return super.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, meta, placer, hand); }
@Override
public boolean removedByPlayer(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest)
{ return super.removedByPlayer(state, world, pos, player, willHarvest); }
}

View file

@ -0,0 +1,112 @@
/*
* @file BlockDecorDirected.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 net.minecraft.block.SoundType;
import wile.engineersdecor.detail.ModAuxiliaries;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.BlockDirectional;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockFaceShape;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.world.World;
import net.minecraft.world.IBlockAccess;
import net.minecraft.util.Mirror;
import net.minecraft.util.Rotation;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
public class BlockDecorDirected extends BlockDecor
{
public static final PropertyDirection FACING = BlockDirectional.FACING;
protected final ArrayList<AxisAlignedBB> AABBs;
public BlockDecorDirected(@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);
AABBs = new ArrayList<AxisAlignedBB>(Arrays.asList(
ModAuxiliaries.getRotatedAABB(unrotatedAABB, EnumFacing.DOWN),
ModAuxiliaries.getRotatedAABB(unrotatedAABB, EnumFacing.UP),
ModAuxiliaries.getRotatedAABB(unrotatedAABB, EnumFacing.NORTH),
ModAuxiliaries.getRotatedAABB(unrotatedAABB, EnumFacing.SOUTH),
ModAuxiliaries.getRotatedAABB(unrotatedAABB, EnumFacing.WEST),
ModAuxiliaries.getRotatedAABB(unrotatedAABB, EnumFacing.EAST),
ModAuxiliaries.getRotatedAABB(unrotatedAABB, EnumFacing.EAST),
ModAuxiliaries.getRotatedAABB(unrotatedAABB, EnumFacing.EAST)
));
}
@Override
public boolean isOpaqueCube(IBlockState state)
{ return false; }
@Override
public boolean isFullCube(IBlockState state)
{ return false; }
@Override
public boolean isNormalCube(IBlockState state)
{ return false; }
@Override
@SuppressWarnings("deprecation")
public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, BlockPos pos, EnumFacing face)
{ return BlockFaceShape.UNDEFINED; }
@Override
@SuppressWarnings("deprecation")
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
{ return AABBs.get(((EnumFacing)state.getValue(FACING)).getIndex() & 0x7); }
@Override
@Nullable
public AxisAlignedBB getCollisionBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos)
{ return getBoundingBox(state, world, pos); }
@Override
@SideOnly(Side.CLIENT)
public BlockRenderLayer getRenderLayer()
{ return BlockRenderLayer.CUTOUT; }
@Override
public IBlockState getStateFromMeta(int meta)
{ return this.getDefaultState().withProperty(FACING, EnumFacing.byIndex(meta & 0x7)); }
@Override
public int getMetaFromState(IBlockState state)
{ return state.getValue(FACING).getIndex(); }
@Override
protected BlockStateContainer createBlockState()
{ return new BlockStateContainer(this, FACING); }
@Override
public IBlockState withRotation(IBlockState state, Rotation rot)
{ return state.withProperty(FACING, rot.rotate((EnumFacing)state.getValue(FACING))); }
@Override
public IBlockState withMirror(IBlockState state, Mirror mirrorIn)
{ return state.withRotation(mirrorIn.toRotation((EnumFacing)state.getValue(FACING))); }
@Override
@SuppressWarnings("deprecation")
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
{ return this.getDefaultState().withProperty(FACING, facing); }
}

View file

@ -0,0 +1,60 @@
/*
* @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.BlockFaceShape;
import net.minecraft.block.state.IBlockState;
import net.minecraft.world.IBlockAccess;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class BlockDecorFull extends BlockDecor
{
public BlockDecorFull(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound)
{
super(registryName, config, material, hardness, resistance, sound);
setLightOpacity(1);
}
@Override
public boolean isOpaqueCube(IBlockState state)
{ return true; }
@Override
@SuppressWarnings("deprecation")
public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, BlockPos pos, EnumFacing face)
{ return BlockFaceShape.SOLID; }
@Override
@SuppressWarnings("deprecation")
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
{ return FULL_BLOCK_AABB; }
@Override
@Nullable
public AxisAlignedBB getCollisionBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos)
{ return FULL_BLOCK_AABB; }
@Override
@SuppressWarnings("deprecation")
public boolean isFullCube(IBlockState state)
{ return true; }
@Override
@SuppressWarnings("deprecation")
public boolean isNormalCube(IBlockState state)
{ return true; }
}

View file

@ -0,0 +1,134 @@
/*
* @file BlockDecorLadder.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2019 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Ladder block. The implementation is based on the vanilla
* net.minecraft.block.BlockLadder. Minor changes to enable
* later configuration (for block list based construction
* time configuration), does not drop when the block behind
* is broken, etc.
*/
package wile.engineersdecor.blocks;
import net.minecraft.block.SoundType;
import wile.engineersdecor.detail.ModAuxiliaries;
import net.minecraft.block.BlockHorizontal;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.BlockFaceShape;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.*;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class BlockDecorLadder extends BlockDecor
{
public static final PropertyDirection FACING = BlockHorizontal.FACING;
protected static final AxisAlignedBB EDLADDER_SOUTH_AABB = ModAuxiliaries.getPixeledAABB(3, 0, 0, 13, 16, 2);
protected static final AxisAlignedBB EDLADDER_EAST_AABB = ModAuxiliaries.getRotatedAABB(EDLADDER_SOUTH_AABB, EnumFacing.EAST);
protected static final AxisAlignedBB EDLADDER_WEST_AABB = ModAuxiliaries.getRotatedAABB(EDLADDER_SOUTH_AABB, EnumFacing.WEST);
protected static final AxisAlignedBB EDLADDER_NORTH_AABB = ModAuxiliaries.getRotatedAABB(EDLADDER_SOUTH_AABB, EnumFacing.NORTH);
public BlockDecorLadder(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound)
{
super(registryName, config, material, hardness, resistance, sound);
setLightOpacity(0);
setResistance(2.0f);
setHardness(0.3f);
}
@Override
@SideOnly(Side.CLIENT)
public BlockRenderLayer getRenderLayer()
{ return BlockRenderLayer.CUTOUT; }
@Override
public boolean isOpaqueCube(IBlockState state)
{ return false; }
@Override
public boolean isFullCube(IBlockState state)
{ return false; }
@Override
public boolean isNormalCube(IBlockState state)
{ return false; }
@Override
public boolean isLadder(IBlockState state, IBlockAccess world, BlockPos pos, EntityLivingBase entity)
{ return true; }
@Override
@SuppressWarnings("deprecation")
public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, BlockPos pos, EnumFacing face)
{ return BlockFaceShape.UNDEFINED; }
@Override
@SuppressWarnings("deprecation")
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
{
switch ((EnumFacing)state.getValue(FACING)) {
case NORTH: return EDLADDER_NORTH_AABB;
case SOUTH: return EDLADDER_SOUTH_AABB;
case WEST: return EDLADDER_WEST_AABB;
default: return EDLADDER_EAST_AABB;
}
}
@Override
public IBlockState getStateFromMeta(int meta)
{
final EnumFacing facing = EnumFacing.byIndex(meta & 0x7);
return this.getDefaultState().withProperty(FACING, (facing.getAxis()==EnumFacing.Axis.Y) ? EnumFacing.NORTH : facing);
}
@Override
public int getMetaFromState(IBlockState state)
{ return state.getValue(FACING).getIndex(); }
@Override
protected BlockStateContainer createBlockState()
{ return new BlockStateContainer(this, FACING); }
@Override
public IBlockState withRotation(IBlockState state, Rotation rot)
{ return state.withProperty(FACING, rot.rotate((EnumFacing)state.getValue(FACING))); }
@Override
public IBlockState withMirror(IBlockState state, Mirror mirrorIn)
{ return state.withRotation(mirrorIn.toRotation((EnumFacing)state.getValue(FACING))); }
@Override
public boolean canPlaceBlockOnSide(World world, BlockPos pos, EnumFacing side)
{ return canAttachTo(world, pos.west(), side) || canAttachTo(world, pos.east(), side) || canAttachTo(world, pos.north(), side) || canAttachTo(world, pos.south(), side); }
@Override
@SuppressWarnings("deprecation")
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
{
if(facing.getAxis().isHorizontal() && canAttachTo(world, pos.offset(facing.getOpposite()), facing)) return this.getDefaultState().withProperty(FACING, facing);
for(EnumFacing e:EnumFacing.Plane.HORIZONTAL) {
if(this.canAttachTo(world, pos.offset(e.getOpposite()), e)) return this.getDefaultState().withProperty(FACING, e);
}
return this.getDefaultState();
}
private boolean canAttachTo(World world, BlockPos pos, EnumFacing side)
{
final IBlockState state = world.getBlockState(pos);
return (!isExceptBlockForAttachWithPiston(state.getBlock())) && (state.getBlockFaceShape(world, pos, side) == BlockFaceShape.SOLID);
}
}

View file

@ -0,0 +1,27 @@
/*
* @file BlockDecorStairs.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2019 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Stairs and roof blocks, almost entirely based on vanilla stairs.
*/
package wile.engineersdecor.blocks;
import net.minecraft.block.SoundType;
import net.minecraft.block.state.IBlockState;
import wile.engineersdecor.ModEngineersDecor;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class BlockDecorStairs extends net.minecraft.block.BlockStairs
{
public BlockDecorStairs(@Nonnull String registryName, IBlockState modelState)
{
super(modelState);
setCreativeTab(ModEngineersDecor.CREATIVE_TAB_ENGINEERSDECOR);
setRegistryName(ModEngineersDecor.MODID, registryName);
setTranslationKey(ModEngineersDecor.MODID + "." + registryName);
}
}

View file

@ -0,0 +1,109 @@
/*
* @file ModBlocks.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2018 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Definition and initialisation of blocks of this
* module, along with their tile entities if applicable.
*
* Note: Straight forward definition of different blocks/entities
* to make recipes, models and texture definitions easier.
*/
package wile.engineersdecor.blocks;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraftforge.client.model.ModelLoader;
import wile.engineersdecor.ModEngineersDecor;
import wile.engineersdecor.detail.ModAuxiliaries;
import wile.engineersdecor.detail.ModConfig;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
import javax.annotation.Nonnull;
@SuppressWarnings("unused")
public class ModBlocks
{
// Full blocks
public static final BlockDecorFull CLINKER_BRICK_WALL = new BlockDecorFull("clinker_brick_block", 0, Material.ROCK, 1.5f, 20f, SoundType.STONE);
public static final BlockDecorFull SLAG_BRICK_WALL = new BlockDecorFull("slag_brick_block", 0, Material.ROCK, 1.8f, 25f, SoundType.STONE);
public static final BlockDecorFull IRON_SHEET_ROOF_FULLBLOCK = new BlockDecorFull("iron_sheet_roof_block", 0, Material.IRON, 1.8f, 25f, SoundType.METAL);
// Ladders
public static final BlockDecorLadder METAL_RUNG_LADDER = new BlockDecorLadder("metal_rung_ladder", 0, Material.IRON, 1.8f, 25f, SoundType.METAL);
public static final BlockDecorLadder METAL_RUNG_STEPS = new BlockDecorLadder("metal_rung_steps", 0, Material.IRON, 1.8f, 25f, SoundType.METAL);
public static final BlockDecorLadder TREATED_WOOD_LADDER = new BlockDecorLadder("treated_wood_ladder", 0, Material.WOOD, 1.0f, 15f, SoundType.WOOD);
// Stairs or stairs-like
public static final BlockDecorStairs CLINKER_BRICK_STAIRS = new BlockDecorStairs("clinker_brick_stairs", CLINKER_BRICK_WALL.getDefaultState());
public static final BlockDecorStairs SLAG_BRICK_STAIRS = new BlockDecorStairs("slag_brick_stairs", SLAG_BRICK_WALL.getDefaultState());
public static final BlockDecorStairs IRON_SHEET_ROOF = new BlockDecorStairs("iron_sheet_roof", IRON_SHEET_ROOF_FULLBLOCK.getDefaultState());
// Oblongs and poles
public static final BlockDecorDirected TREATED_WOOD_POLE = new BlockDecorDirected("treated_wood_pole", 0, Material.WOOD, 1.0f, 15f, SoundType.WOOD, ModAuxiliaries.getPixeledAABB(5.8,5.8,0, 10.2,10.2,16));
// Furniture
public static final BlockDecor TREATED_WOOD_TABLE = new BlockDecor("treated_wood_table", BlockDecor.CFG_CUTOUT, Material.WOOD, 1.0f, 15f, SoundType.WOOD);
private static final Block modBlocks[] = {
SLAG_BRICK_WALL,
CLINKER_BRICK_WALL,
METAL_RUNG_LADDER,
METAL_RUNG_STEPS,
TREATED_WOOD_LADDER,
CLINKER_BRICK_STAIRS,
SLAG_BRICK_STAIRS,
TREATED_WOOD_POLE,
TREATED_WOOD_TABLE
};
private static final Block devBlocks[] = {
IRON_SHEET_ROOF, // model looks not good enough yet
};
private static ArrayList<Block> registeredBlocks = new ArrayList<>();
@Nonnull
public static List getRegisteredBlocks()
{ return Collections.unmodifiableList(registeredBlocks); }
// Invoked from CommonProxy.registerBlocks()
public static final void registerBlocks(RegistryEvent.Register<Block> event)
{
// Config based registry selection
ArrayList<Block> allBlocks = new ArrayList<>();
Collections.addAll(allBlocks, modBlocks);
if(ModConfig.zmisc.with_experimental) Collections.addAll(allBlocks, devBlocks);
for(Block e:allBlocks) registeredBlocks.add(e);
for(Block e:registeredBlocks) event.getRegistry().register(e);
ModEngineersDecor.logger.info("Registered " + Integer.toString(registeredBlocks.size()) + " blocks.");
}
// Invoked from ClientProxy.registerModels()
@SideOnly(Side.CLIENT)
public static final void initModels()
{
for(Block e:registeredBlocks) {
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(e), 0, new ModelResourceLocation(e.getRegistryName(), "inventory"));
}
}
// Invoked from CommonProxy.registerItems()
public static final void registerItemBlocks(RegistryEvent.Register<Item> event)
{
int n = 0;
for(Block e:registeredBlocks) {
ResourceLocation rl = e.getRegistryName();
if(rl == null) continue;
event.getRegistry().register(new ItemBlock(e).setRegistryName(rl));
++n;
}
}
}

View file

@ -0,0 +1,27 @@
/*
* @file ClientProxy.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2018 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Client side only initialisation.
*/
package wile.engineersdecor.detail;
import wile.engineersdecor.ModEngineersDecor;
import net.minecraftforge.client.model.obj.OBJLoader;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
public class ClientProxy implements ModEngineersDecor.IProxy
{
public void preInit(FMLPreInitializationEvent e)
{ OBJLoader.INSTANCE.addDomain(ModEngineersDecor.MODID); }
public void init(FMLInitializationEvent e)
{}
public void postInit(FMLPostInitializationEvent e)
{}
}

View file

@ -0,0 +1,136 @@
/*
* @file ModAuxiliaries.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2018 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* General commonly used functionality.
*/
package wile.engineersdecor.detail;
import net.minecraft.util.EnumFacing;
import wile.engineersdecor.ModEngineersDecor;
import net.minecraft.item.ItemStack;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.world.World;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.lwjgl.input.Keyboard;
import javax.annotation.Nullable;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ModAuxiliaries
{
/**
* Text localisation wrapper, implicitly prepends `ModEngineersDecor.MODID` to the
* translation keys. Forces formatting argument, nullable if no special formatting shall be applied..
*/
public static TextComponentTranslation localizable(String modtrkey, @Nullable TextFormatting color, Object... args)
{
TextComponentTranslation tr = new TextComponentTranslation(ModEngineersDecor.MODID+"."+modtrkey, args);
if(color!=null) tr.getStyle().setColor(color);
return tr;
}
@SideOnly(Side.CLIENT)
public static String localize(String translationKey, Object... args)
{
TextComponentTranslation tr = new TextComponentTranslation(translationKey, args);
tr.getStyle().setColor(TextFormatting.RESET);
final String ft = tr.getFormattedText();
if(ft.contains("${")) {
// Non-recursive, non-argument lang file entry cross referencing.
Pattern pt = Pattern.compile("\\$\\{([\\w\\.]+)\\}");
Matcher mt = pt.matcher(ft);
StringBuffer sb = new StringBuffer();
while(mt.find()) mt.appendReplacement(sb, (new TextComponentTranslation(mt.group(1))).getFormattedText().trim());
mt.appendTail(sb);
return sb.toString();
} else {
return ft;
}
}
/**
* Returns true if a given key is translated for the current language.
*/
@SideOnly(Side.CLIENT)
public static boolean hasTranslation(String key)
{ return net.minecraft.client.resources.I18n.hasKey(key); }
public static final class Tooltip
{
@SideOnly(Side.CLIENT)
public static boolean extendedTipCondition()
{ return (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)||Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)); }
@SideOnly(Side.CLIENT)
public static boolean helpCondition()
{ return extendedTipCondition() && ((Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)||Keyboard.isKeyDown(Keyboard.KEY_RCONTROL))); }
/**
* Adds an extended tooltip or help tooltip depending on the key states of CTRL and SHIFT.
* Returns true if the localisable help/tip was added, false if not (either not CTL/SHIFT or
* no translation found).
*/
@SideOnly(Side.CLIENT)
public static boolean addInformation(@Nullable String advancedTooltipTranslationKey, @Nullable String helpTranslationKey, List<String> tooltip, ITooltipFlag flag, boolean addAdvancedTooltipHints)
{
// Note: intentionally not using keybinding here, this must be `control` or `shift`. MC uses lwjgl Keyboard,
// so using this also here should be ok.
final boolean help_available = (helpTranslationKey != null) && ModAuxiliaries.hasTranslation(helpTranslationKey + ".help");
final boolean tip_available = (advancedTooltipTranslationKey != null) && ModAuxiliaries.hasTranslation(helpTranslationKey + ".tip");
if((!help_available) && (!tip_available)) return false;
if(helpCondition()) {
if(!help_available) return false;
String s = localize(helpTranslationKey + ".help");
if(s.isEmpty()) return false;
tooltip.add(s);
return true;
} else if(extendedTipCondition()) {
if(!tip_available) return false;
String s = localize(advancedTooltipTranslationKey + ".tip");
if(s.isEmpty()) return false;
tooltip.add(s);
return true;
} else if(addAdvancedTooltipHints) {
String s = "";
if(tip_available) s += localize(ModEngineersDecor.MODID + ".tooltip.hint.extended") + (help_available ? " " : "");
if(help_available) s += localize(ModEngineersDecor.MODID + ".tooltip.hint.help");
tooltip.add(s);
}
return false;
}
/**
* Adds an extended tooltip or help tooltip for a given stack depending on the key states of CTRL and SHIFT.
* Format in the lang file is (e.g. for items): "item.MODID.REGISTRYNAME.tip" and "item.MODID.REGISTRYNAME.help".
* Return value see method pattern above.
*/
@SideOnly(Side.CLIENT)
public static boolean addInformation(ItemStack stack, @Nullable World world, List<String> tooltip, ITooltipFlag flag, boolean addAdvancedTooltipHints)
{ return addInformation(stack.getTranslationKey(), stack.getTranslationKey(), tooltip, flag, addAdvancedTooltipHints); }
}
public static final AxisAlignedBB getPixeledAABB(double x0, double y0, double z0, double x1, double y1, double z1)
{ return new AxisAlignedBB(x0/16.0, y0/16.0, z0/16.0, x1/16.0, y1/16.0, z1/16.0); }
public static final AxisAlignedBB getRotatedAABB(AxisAlignedBB bb, EnumFacing new_facing)
{
switch(new_facing.getIndex()) {
case 0: return new AxisAlignedBB(1-bb.maxX, 1-bb.maxZ, 1-bb.maxY, 1-bb.minX, 1-bb.minZ, 1-bb.minY); // D
case 1: return new AxisAlignedBB(1-bb.maxX, bb.minZ, bb.minY, 1-bb.minX, bb.maxZ, bb.maxY); // U
case 2: return new AxisAlignedBB(1-bb.maxX, bb.minY, 1-bb.maxZ, 1-bb.minX, bb.maxY, 1-bb.minZ); // N
case 3: return new AxisAlignedBB( bb.minX, bb.minY, bb.minZ, bb.maxX, bb.maxY, bb.maxZ); // S --> bb
case 4: return new AxisAlignedBB(1-bb.maxZ, bb.minY, bb.minX, 1-bb.minZ, bb.maxY, bb.maxX); // W
case 5: return new AxisAlignedBB( bb.minZ, bb.minY, 1-bb.maxX, bb.maxZ, bb.maxY, 1-bb.minX); // E
}
return bb;
}
}

View file

@ -0,0 +1,52 @@
/*
* @file ModConfig.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2018 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Main class for module settings. Handles reading and
* saving the config file.
*/
package wile.engineersdecor.detail;
import wile.engineersdecor.ModEngineersDecor;
import net.minecraftforge.common.config.Config;
import net.minecraftforge.common.config.ConfigManager;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
@Config(modid = ModEngineersDecor.MODID)
@Config.LangKey("engineersdecor.config.title")
public class ModConfig
{
@Config.Comment({
"Settings for beta testing and trouble shooting. Some of the settings " +
"may be moved to other categories after testing."
})
@Config.Name("Miscellaneous")
public static final SettingsZTesting zmisc = new SettingsZTesting();
public static final class SettingsZTesting
{
@Config.Comment({ "Enables experimental features. Use at own risk." })
@Config.Name("With experimental")
public boolean with_experimental = false;
}
@SuppressWarnings("unused")
@Mod.EventBusSubscriber(modid=ModEngineersDecor.MODID)
private static final class EventHandler
{
@SubscribeEvent
public static void onConfigChanged(final ConfigChangedEvent.OnConfigChangedEvent event) {
if(!event.getModID().equals(ModEngineersDecor.MODID)) return;
ConfigManager.sync(ModEngineersDecor.MODID, Config.Type.INSTANCE);
}
}
@SuppressWarnings("unused")
public static final void onPostInit(FMLPostInitializationEvent event)
{}
}

View file

@ -0,0 +1,69 @@
/*
* @file RecipeCondRegistered.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2018 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Recipe condition to enable opt'ing out JSON based recipes, referenced
* in assets/engineersdecor/recipes/_factories.json with full path (therefore
* I had to make a separate file for that instead of a few lines in
* ModAuxiliaries).
*/
package wile.engineersdecor.detail;
import wile.engineersdecor.ModEngineersDecor;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.crafting.IConditionFactory;
import net.minecraftforge.common.crafting.JsonContext;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import com.google.gson.*;
import java.util.function.BooleanSupplier;
public class RecipeCondModSpecific implements IConditionFactory
{
public static final BooleanSupplier RECIPE_INCLUDE = ()->true;
public static final BooleanSupplier RECIPE_EXCLUDE = ()->false;
@Override
public BooleanSupplier parse(JsonContext context, JsonObject json) {
try {
final IForgeRegistry<Block> block_registry = ForgeRegistries.BLOCKS;
final IForgeRegistry<Item> item_registry = ForgeRegistries.ITEMS;
final JsonArray items = json.getAsJsonArray("required");
if(items!=null) {
for(JsonElement e: items) {
if(!e.isJsonPrimitive()) continue;
final ResourceLocation rl = new ResourceLocation(((JsonPrimitive)e).getAsString());
if((!block_registry.containsKey(rl)) && (!item_registry.containsKey(rl))) return RECIPE_EXCLUDE; // required item not registered
}
}
final JsonPrimitive result = json.getAsJsonPrimitive("result");
if(result != null) {
final ResourceLocation rl = new ResourceLocation(result.getAsString());
if((!block_registry.containsKey(rl)) && (!item_registry.containsKey(rl))) return RECIPE_EXCLUDE; // required result not registered
}
final JsonArray missing = json.getAsJsonArray("missing");
if((missing!=null) && (missing.size() > 0)) {
for(JsonElement e: missing) {
if(!e.isJsonPrimitive()) continue;
final ResourceLocation rl = new ResourceLocation(((JsonPrimitive)e).getAsString());
// At least one item missing, enable this recipe as alternative recipe for another one that check the missing item as required item.
// --> e.g. if IE not installed there is no slag. One recipe requires slag, and another one (for the same result) is used if there
// is no slag.
if((!block_registry.containsKey(rl)) && (!item_registry.containsKey(rl))) return RECIPE_INCLUDE;
}
return RECIPE_EXCLUDE; // all required there, but there is no item missing, so another recipe
} else {
return RECIPE_INCLUDE; // no missing given, means include if result and required are all there.
}
} catch(Throwable ex) {
ModEngineersDecor.logger.error("rsgauges::ResultRegisteredCondition failed: " + ex.toString());
}
return RECIPE_EXCLUDE; // skip on exception.
}
}

View file

@ -0,0 +1,26 @@
/*
* @file ServerProxy.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2018 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Module initialisation event handling, server side only.
*/
package wile.engineersdecor.detail;
import wile.engineersdecor.ModEngineersDecor;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
public class ServerProxy implements ModEngineersDecor.IProxy
{
public void preInit(FMLPreInitializationEvent e)
{}
public void init(FMLInitializationEvent e)
{}
public void postInit(FMLPostInitializationEvent e)
{}
}

View file

@ -0,0 +1,20 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:clinker_brick_model",
"textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0" }
},
"variants": {
"normal": [
{ "textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0" } },
{ "textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture1" } },
{ "textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture2" } },
{ "textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture3" } },
{ "textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture4" } },
{ "textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture5" } },
{ "textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture6" } },
{ "textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture7" } }
],
"inventory": [{}]
}
}

View file

@ -0,0 +1,56 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:stairs/decor_straight_stairs_model",
"textures": {
"particle": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0",
"bottom": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0",
"top": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0",
"side": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0"
}
},
"variants": {
"normal": [{}],
"inventory": [{}],
"facing=east,half=bottom,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model" },
"facing=west,half=bottom,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model" },
"facing=west,half=bottom,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "y": 270, "uvlock": true },
"facing=west,half=bottom,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "y": 90, "uvlock": true },
"facing=south,half=bottom,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model" },
"facing=north,half=bottom,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "y": 180, "uvlock": true },
"facing=east,half=bottom,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model" },
"facing=west,half=bottom,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "y": 270, "uvlock": true },
"facing=west,half=bottom,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "y": 90, "uvlock": true },
"facing=south,half=bottom,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model" },
"facing=north,half=bottom,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "y": 180, "uvlock": true },
"facing=east,half=top,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "x": 180, "uvlock": true },
"facing=west,half=top,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "x": 180, "y": 270, "uvlock": true },
"facing=east,half=top,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "y": 90, "uvlock": true },
"facing=west,half=top,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "y": 270, "uvlock": true },
"facing=south,half=top,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "y": 180, "uvlock": true },
"facing=north,half=top,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "uvlock": true },
"facing=east,half=top,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "uvlock": true },
"facing=west,half=top,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "y": 270, "uvlock": true },
"facing=east,half=top,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "y": 90, "uvlock": true },
"facing=west,half=top,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "y": 270, "uvlock": true },
"facing=south,half=top,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "y": 180, "uvlock": true },
"facing=north,half=top,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "uvlock": true },
"facing=east,half=top,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "uvlock": true },
"facing=west,half=top,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "y": 270, "uvlock": true }
}
}

View file

@ -0,0 +1,55 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:stairs/decor_straight_roof_model",
"textures": {
"bottom": "engineersdecor:blocks/iestyle/ironsheet_roof_top",
"side": "engineersdecor:blocks/iestyle/ironsheet_roof",
"top": "engineersdecor:blocks/iestyle/ironsheet_roof_top"
}
},
"variants": {
"normal": [{}],
"inventory": [{}],
"facing=east,half=bottom,shape=straight": { "model": "engineersdecor:stairs/decor_straight_roof_model" },
"facing=west,half=bottom,shape=straight": { "model": "engineersdecor:stairs/decor_straight_roof_model", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=straight": { "model": "engineersdecor:stairs/decor_straight_roof_model", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=straight": { "model": "engineersdecor:stairs/decor_straight_roof_model", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_roof_model" },
"facing=west,half=bottom,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_roof_model", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_roof_model", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_roof_model", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_roof_model", "y": 270, "uvlock": true },
"facing=west,half=bottom,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_roof_model", "y": 90, "uvlock": true },
"facing=south,half=bottom,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_roof_model" },
"facing=north,half=bottom,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_roof_model", "y": 180, "uvlock": true },
"facing=east,half=bottom,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_roof_model" },
"facing=west,half=bottom,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_roof_model", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_roof_model", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_roof_model", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_roof_model", "y": 270, "uvlock": true },
"facing=west,half=bottom,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_roof_model", "y": 90, "uvlock": true },
"facing=south,half=bottom,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_roof_model" },
"facing=north,half=bottom,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_roof_model", "y": 180, "uvlock": true },
"facing=east,half=top,shape=straight": { "model": "engineersdecor:stairs/decor_straight_roof_model", "x": 180, "uvlock": true },
"facing=west,half=top,shape=straight": { "model": "engineersdecor:stairs/decor_straight_roof_model", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=straight": { "model": "engineersdecor:stairs/decor_straight_roof_model", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=straight": { "model": "engineersdecor:stairs/decor_straight_roof_model", "x": 180, "y": 270, "uvlock": true },
"facing=east,half=top,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_roof_model", "x": 180, "y": 90, "uvlock": true },
"facing=west,half=top,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_roof_model", "x": 180, "y": 270, "uvlock": true },
"facing=south,half=top,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_roof_model", "x": 180, "y": 180, "uvlock": true },
"facing=north,half=top,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_roof_model", "x": 180, "uvlock": true },
"facing=east,half=top,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_roof_model", "x": 180, "uvlock": true },
"facing=west,half=top,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_roof_model", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_roof_model", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_roof_model", "x": 180, "y": 270, "uvlock": true },
"facing=east,half=top,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_roof_model", "x": 180, "y": 90, "uvlock": true },
"facing=west,half=top,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_roof_model", "x": 180, "y": 270, "uvlock": true },
"facing=south,half=top,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_roof_model", "x": 180, "y": 180, "uvlock": true },
"facing=north,half=top,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_roof_model", "x": 180, "uvlock": true },
"facing=east,half=top,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_roof_model", "x": 180, "uvlock": true },
"facing=west,half=top,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_roof_model", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_roof_model", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_roof_model", "x": 180, "y": 270, "uvlock": true }
}
}

View file

@ -0,0 +1,11 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:decor_full_block_model",
"textures": { "all": "engineersdecor:blocks/iestyle/ironsheet_roof" }
},
"variants": {
"normal": [{}],
"inventory": [{}]
}
}

View file

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

View file

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

View file

@ -0,0 +1,20 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:slag_brick_model",
"textures": { "all": "engineersdecor:blocks/slag_brick/slag_brick_texture0" }
},
"variants": {
"normal": [
{ "textures": { "all": "engineersdecor:blocks/slag_brick/slag_brick_texture0" } },
{ "textures": { "all": "engineersdecor:blocks/slag_brick/slag_brick_texture1" } },
{ "textures": { "all": "engineersdecor:blocks/slag_brick/slag_brick_texture2" } },
{ "textures": { "all": "engineersdecor:blocks/slag_brick/slag_brick_texture3" } },
{ "textures": { "all": "engineersdecor:blocks/slag_brick/slag_brick_texture4" } },
{ "textures": { "all": "engineersdecor:blocks/slag_brick/slag_brick_texture5" } },
{ "textures": { "all": "engineersdecor:blocks/slag_brick/slag_brick_texture6" } },
{ "textures": { "all": "engineersdecor:blocks/slag_brick/slag_brick_texture7" } }
],
"inventory": [{}]
}
}

View file

@ -0,0 +1,56 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:stairs/decor_straight_stairs_model",
"textures": {
"particle": "engineersdecor:blocks/slag_brick/slag_brick_texture0",
"bottom": "engineersdecor:blocks/slag_brick/slag_brick_texture0",
"top" : "engineersdecor:blocks/slag_brick/slag_brick_texture0",
"side" : "engineersdecor:blocks/slag_brick/slag_brick_texture0"
}
},
"variants": {
"normal": [{}],
"inventory": [{}],
"facing=east,half=bottom,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model" },
"facing=west,half=bottom,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model" },
"facing=west,half=bottom,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "y": 270, "uvlock": true },
"facing=west,half=bottom,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "y": 90, "uvlock": true },
"facing=south,half=bottom,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model" },
"facing=north,half=bottom,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "y": 180, "uvlock": true },
"facing=east,half=bottom,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model" },
"facing=west,half=bottom,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "y": 180, "uvlock": true },
"facing=south,half=bottom,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "y": 90, "uvlock": true },
"facing=north,half=bottom,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "y": 270, "uvlock": true },
"facing=east,half=bottom,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "y": 270, "uvlock": true },
"facing=west,half=bottom,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "y": 90, "uvlock": true },
"facing=south,half=bottom,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model" },
"facing=north,half=bottom,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "y": 180, "uvlock": true },
"facing=east,half=top,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "x": 180, "uvlock": true },
"facing=west,half=top,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=straight": { "model": "engineersdecor:stairs/decor_straight_stairs_model", "x": 180, "y": 270, "uvlock": true },
"facing=east,half=top,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "y": 90, "uvlock": true },
"facing=west,half=top,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "y": 270, "uvlock": true },
"facing=south,half=top,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "y": 180, "uvlock": true },
"facing=north,half=top,shape=outer_right": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "uvlock": true },
"facing=east,half=top,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "uvlock": true },
"facing=west,half=top,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=outer_left": { "model": "engineersdecor:stairs/decor_outer_stairs_model", "x": 180, "y": 270, "uvlock": true },
"facing=east,half=top,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "y": 90, "uvlock": true },
"facing=west,half=top,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "y": 270, "uvlock": true },
"facing=south,half=top,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "y": 180, "uvlock": true },
"facing=north,half=top,shape=inner_right": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "uvlock": true },
"facing=east,half=top,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "uvlock": true },
"facing=west,half=top,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "y": 180, "uvlock": true },
"facing=south,half=top,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "y": 90, "uvlock": true },
"facing=north,half=top,shape=inner_left": { "model": "engineersdecor:stairs/decor_inner_stairs_model", "x": 180, "y": 270, "uvlock": true }
}
}

View file

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

View file

@ -0,0 +1,17 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:pole/straight_pole_model",
"x":-90,
"textures": {
"particle": "engineersdecor:blocks/pole/treated_wood_pole_side_texture",
"side": "engineersdecor:blocks/pole/treated_wood_pole_side_texture",
"top": "engineersdecor:blocks/pole/treated_wood_pole_top_texture"
}
},
"variants": {
"normal": [{}],
"facing": { "north": {"y":0}, "south": {"y":0}, "west": {"y":90}, "east": {"y":90}, "up": {"x":90}, "down": {"x":90} },
"inventory": [{}]
}
}

View file

@ -0,0 +1,8 @@
{
"forge_marker": 1,
"defaults": { "model": "engineersdecor:treated_wood_table_model" },
"variants": {
"normal": [{}],
"inventory": [{}]
}
}

View file

@ -0,0 +1,49 @@
#
# Engineer's Decor lang file
#
#PARSE_ESCAPES
#
#-----------------------------------------------------------------------------------------------------------
itemGroup.tabengineersdecor=Engineer's Decor
engineersdecor.config.title=Engineer's Decor config
engineersdecor.tooltip.hint.extended=§6[§9SHIFT§r More info§6]§r
engineersdecor.tooltip.hint.help=§6[§9CTRL-SHIFT§r Help§6]§r
#-----------------------------------------------------------------------------------------------------------
# Wall blocks
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.clinker_brick_block.name=Clinker brick
tile.engineersdecor.clinker_brick_block.help=§6A brick wall block with position dependent texture variations.§r\nLooks slightly darker and more color intensive than the vanilla brick block.
tile.engineersdecor.slag_brick_block.name=Slag brick
tile.engineersdecor.slag_brick_block.help=§6A gray-brown brick wall block with position dependent texture variations.
#-----------------------------------------------------------------------------------------------------------
# Ladder blocks
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.metal_rung_ladder.name=Metal rung ladder
tile.engineersdecor.metal_rung_ladder.help=§6Typical industrial wall ladder, consisting of horizontal metal rod rungs.
tile.engineersdecor.metal_rung_steps.name=Staggered metal steps
tile.engineersdecor.metal_rung_steps.help=§6Staggered rod rungs affixed to a wall, allowing to climb up, fall down, and so on.
tile.engineersdecor.treated_wood_ladder.name=Treated wood ladder
tile.engineersdecor.treated_wood_ladder.help=§6Weather-proof wooden ladder.
#-----------------------------------------------------------------------------------------------------------
# Stairs and roofs
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.clinker_brick_stairs.name=Clinker brick stairs
tile.engineersdecor.clinker_brick_stairs.help=§6§rLooks slightly darker and more color intensive than the vanilla brick block.
tile.engineersdecor.slag_brick_stairs.name=Clinker brick stairs
tile.engineersdecor.slag_brick_stairs.help=§6§rLooks slightly darker and more color intensive than the vanilla brick block.
tile.engineersdecor.iron_sheet_roof.name=Iron sheet metal roof
tile.engineersdecor.iron_sheet_roof.help=§6Well, it's a roof.
#-----------------------------------------------------------------------------------------------------------
# Poles
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.treated_wood_pole.name=Straight treated wood pole
tile.engineersdecor.treated_wood_pole.help=§6Straight pole fragment with the diameter of a wire relay.§r\n\
Can be useful as alternative to the wire posts if special special lengths are needed, \
or as support for structures.
# EOF
#-----------------------------------------------------------------------------------------------------------

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

View file

@ -0,0 +1 @@
{ "parent": "block/cube_all", "textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0" } }

View file

@ -0,0 +1 @@
{ "parent": "block/cube_all", "textures": { "all": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0" } }

View file

@ -0,0 +1,159 @@
{
"credit": "I made this with the Blockbench",
"parent": "block/cube",
"textures": {
"particle": "engineersdecor:blocks/iestyle/steel_texture",
"o": "engineersdecor:blocks/iestyle/steel_texture"
},
"display": {
"gui": { "rotation": [ 30, 225, 0 ], "scale": [0.625, 0.625, 0.625] },
"fixed": { "scale": [0.5, 0.5, 0.5] },
"ground": { "scale": [0.2, 0.2, 0.2] }
},
"elements": [
{
"from": [3, 2, 14],
"to": [13, 3, 15],
"faces": {
"north": {"uv": [1, 13, 16, 15], "texture": "#o"},
"east": {"uv": [12, 13, 14, 15], "texture": "#o"},
"south": {"uv": [1, 13, 16, 15], "texture": "#o"},
"west": {"uv": [13, 11, 15, 13], "texture": "#o"},
"up": {"uv": [1, 11, 16, 13], "texture": "#o"},
"down": {"uv": [1, 13, 16, 15], "texture": "#o"}
}
},
{
"from": [3, 6, 14],
"to": [13, 7, 15],
"faces": {
"north": {"uv": [3, 13, 16, 15], "texture": "#o"},
"east": {"uv": [6, 14, 8, 16], "texture": "#o"},
"south": {"uv": [3, 13, 16, 15], "texture": "#o"},
"west": {"uv": [7, 9, 9, 11], "texture": "#o"},
"up": {"uv": [0, 13, 13, 15], "texture": "#o"},
"down": {"uv": [3, 13, 16, 15], "texture": "#o"}
}
},
{
"from": [3, 14, 14],
"to": [13, 15, 15],
"faces": {
"north": {"uv": [2, 6, 16, 8], "texture": "#o"},
"east": {"uv": [7, 3, 9, 5], "texture": "#o"},
"south": {"uv": [2, 6, 16, 8], "texture": "#o"},
"west": {"uv": [2, 6, 4, 8], "texture": "#o"},
"up": {"uv": [0, 4, 14, 6], "texture": "#o"},
"down": {"uv": [2, 6, 16, 8], "texture": "#o"}
}
},
{
"from": [3, 10, 14],
"to": [13, 11, 15],
"faces": {
"north": {"uv": [0, 11, 13, 13], "texture": "#o"},
"east": {"uv": [1, 13, 3, 15], "texture": "#o"},
"south": {"uv": [0, 11, 13, 13], "texture": "#o"},
"west": {"uv": [0, 11, 2, 13], "texture": "#o"},
"up": {"uv": [0, 9, 13, 11], "texture": "#o"},
"down": {"uv": [0, 11, 13, 13], "texture": "#o"}
}
},
{
"from": [12, 2, 15],
"to": [13.25, 3, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"east": {"uv": [7, 9, 9, 11], "texture": "#o"},
"south": {"uv": [1, 12, 4.25, 14], "texture": "#o"},
"west": {"uv": [0, 0, 1, 1], "texture": "#o"},
"up": {"uv": [13, 4, 16, 6], "texture": "#o"},
"down": {"uv": [1, 12, 4, 14], "texture": "#o"}
}
},
{
"from": [2.75, 2, 15],
"to": [4, 3, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"east": {"uv": [0, 0, 1, 1], "texture": "#o"},
"south": {"uv": [11, 1, 14.25, 3], "texture": "#o"},
"west": {"uv": [11, 9, 13, 11], "texture": "#o"},
"up": {"uv": [12, 11, 15, 13], "texture": "#o"},
"down": {"uv": [7, 3, 10, 5], "texture": "#o"}
}
},
{
"from": [2.75, 10, 15],
"to": [4, 11, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"east": {"uv": [0, 0, 1, 1], "texture": "#o"},
"south": {"uv": [12, 14, 15.25, 16], "texture": "#o"},
"west": {"uv": [7, 10, 9, 12], "texture": "#o"},
"up": {"uv": [5, 12, 8, 14], "texture": "#o"},
"down": {"uv": [4, 14, 7, 16], "texture": "#o"}
}
},
{
"from": [12, 10, 15],
"to": [13.25, 11, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1.25], "texture": "#o"},
"east": {"uv": [2, 4, 5, 6.25], "texture": "#o"},
"south": {"uv": [10, 10, 13, 12], "texture": "#o"},
"west": {"uv": [0, 0, 1, 1.25], "texture": "#o"},
"up": {"uv": [7, 11, 9, 13], "texture": "#o"},
"down": {"uv": [8, 0, 11, 2], "texture": "#o"}
}
},
{
"from": [2.75, 6, 15],
"to": [4, 7, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"east": {"uv": [0, 0, 1, 1], "texture": "#o"},
"south": {"uv": [4, 7, 7.25, 9], "texture": "#o"},
"west": {"uv": [11, 9, 13, 11], "texture": "#o"},
"up": {"uv": [0, 13, 3, 15], "texture": "#o"},
"down": {"uv": [4, 7, 7, 9], "texture": "#o"}
}
},
{
"from": [12, 6, 15],
"to": [13.25, 7, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"east": {"uv": [8, 9, 10, 11], "texture": "#o"},
"south": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"west": {"uv": [0, 0, 1, 1], "texture": "#o"},
"up": {"uv": [5, 13, 8, 15], "texture": "#o"},
"down": {"uv": [8, 14, 11, 16], "texture": "#o"}
}
},
{
"from": [2.75, 14, 15],
"to": [4, 15, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"east": {"uv": [0, 0, 1, 1], "texture": "#o"},
"south": {"uv": [3, 11, 6, 13], "texture": "#o"},
"west": {"uv": [14, 7, 16, 9], "texture": "#o"},
"up": {"uv": [7, 12, 10, 14], "texture": "#o"},
"down": {"uv": [12, 7, 15, 9], "texture": "#o"}
}
},
{
"from": [12, 14, 15],
"to": [13.25, 15, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1.25], "texture": "#o"},
"east": {"uv": [0, 0, 3, 2.25], "texture": "#o"},
"south": {"uv": [0, 13, 3, 15], "texture": "#o"},
"west": {"uv": [0, 0, 1, 1.25], "texture": "#o"},
"up": {"uv": [3, 7, 5.25, 9], "texture": "#o"},
"down": {"uv": [0, 0, 1.25, 1], "texture": "#o"}
}
}
]
}

View file

@ -0,0 +1,166 @@
{
"credit": "I made this with the Blockbench",
"parent": "block/cube",
"textures": {
"o": "engineersdecor:blocks/iestyle/steel_texture",
"particle": "engineersdecor:blocks/iestyle/steel_texture"
},
"elements": [
{
"from": [3, 2, 14],
"to": [7, 3, 15],
"faces": {
"north": {"uv": [1, 13, 9, 15], "texture": "#o"},
"east": {"uv": [12, 13, 14, 15], "texture": "#o"},
"south": {"uv": [4, 10, 11, 12], "texture": "#o"},
"west": {"uv": [13, 11, 15, 13], "texture": "#o"},
"up": {"uv": [1, 11, 9, 13], "texture": "#o"},
"down": {"uv": [7, 2, 14, 4], "texture": "#o"}
}
},
{
"from": [9, 6, 14],
"to": [13, 7, 15],
"faces": {
"north": {"uv": [3, 13, 9, 15], "texture": "#o"},
"east": {"uv": [6, 14, 8, 16], "texture": "#o"},
"south": {"uv": [4, 10, 11, 12], "texture": "#o"},
"west": {"uv": [7, 9, 9, 11], "texture": "#o"},
"up": {"uv": [6, 11, 13, 13], "texture": "#o"},
"down": {"uv": [9, 12, 16, 14], "texture": "#o"}
}
},
{
"from": [9, 14, 14],
"to": [13, 15, 15],
"faces": {
"north": {"uv": [2, 6, 9, 8], "texture": "#o"},
"east": {"uv": [7, 3, 9, 5], "texture": "#o"},
"south": {"uv": [5, 13, 13, 15], "texture": "#o"},
"west": {"uv": [2, 6, 4, 8], "texture": "#o"},
"up": {"uv": [6, 9, 13, 11], "texture": "#o"},
"down": {"uv": [4, 10, 11, 12], "texture": "#o"}
}
},
{
"from": [3, 10, 14],
"to": [7, 11, 15],
"faces": {
"north": {"uv": [0, 11, 6, 13], "texture": "#o"},
"east": {"uv": [1, 13, 3, 15], "texture": "#o"},
"south": {"uv": [4, 6, 12, 8], "texture": "#o"},
"west": {"uv": [0, 11, 2, 13], "texture": "#o"},
"up": {"uv": [3, 5, 11, 7], "texture": "#o"},
"down": {"uv": [5, 7, 12, 9], "texture": "#o"}
}
},
{
"from": [6, 2, 15],
"to": [7.25, 3, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"east": {"uv": [7, 9, 9, 11], "texture": "#o"},
"south": {"uv": [1, 12, 4.25, 14], "texture": "#o"},
"west": {"uv": [0, 0, 1, 1], "texture": "#o"},
"up": {"uv": [13, 4, 16, 6], "texture": "#o"},
"down": {"uv": [1, 12, 4, 14], "texture": "#o"}
}
},
{
"from": [2.75, 2, 15],
"to": [4, 3, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"east": {"uv": [0, 0, 1, 1], "texture": "#o"},
"south": {"uv": [11, 1, 14.25, 3], "texture": "#o"},
"west": {"uv": [11, 9, 13, 11], "texture": "#o"},
"up": {"uv": [12, 11, 15, 13], "texture": "#o"},
"down": {"uv": [7, 3, 10, 5], "texture": "#o"}
}
},
{
"from": [2.75, 10, 15],
"to": [4, 11, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"east": {"uv": [0, 0, 1, 1], "texture": "#o"},
"south": {"uv": [12, 14, 15.25, 16], "texture": "#o"},
"west": {"uv": [7, 10, 9, 12], "texture": "#o"},
"up": {"uv": [5, 12, 8, 14], "texture": "#o"},
"down": {"uv": [4, 14, 7, 16], "texture": "#o"}
}
},
{
"from": [6, 10, 15],
"to": [7.25, 11, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1.25], "texture": "#o"},
"east": {"uv": [2, 4, 5, 6.25], "texture": "#o"},
"south": {"uv": [10, 10, 13, 12], "texture": "#o"},
"west": {"uv": [0, 0, 1, 1.25], "texture": "#o"},
"up": {"uv": [7, 11, 9, 13], "texture": "#o"},
"down": {"uv": [8, 0, 11, 2], "texture": "#o"}
}
},
{
"from": [8.75, 6, 15],
"to": [10, 7, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"east": {"uv": [0, 0, 1, 1], "texture": "#o"},
"south": {"uv": [4, 7, 7.25, 9], "texture": "#o"},
"west": {"uv": [11, 9, 13, 11], "texture": "#o"},
"up": {"uv": [0, 13, 3, 15], "texture": "#o"},
"down": {"uv": [4, 7, 7, 9], "texture": "#o"}
}
},
{
"from": [12, 6, 15],
"to": [13.25, 7, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"east": {"uv": [8, 9, 10, 11], "texture": "#o"},
"south": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"west": {"uv": [0, 0, 1, 1], "texture": "#o"},
"up": {"uv": [5, 13, 8, 15], "texture": "#o"},
"down": {"uv": [8, 14, 11, 16], "texture": "#o"}
}
},
{
"from": [8.75, 14, 15],
"to": [10, 15, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1], "texture": "#o"},
"east": {"uv": [0, 0, 1, 1], "texture": "#o"},
"south": {"uv": [3, 11, 6, 13], "texture": "#o"},
"west": {"uv": [14, 7, 16, 9], "texture": "#o"},
"up": {"uv": [7, 12, 10, 14], "texture": "#o"},
"down": {"uv": [12, 7, 15, 9], "texture": "#o"}
}
},
{
"from": [12, 14, 15],
"to": [13.25, 15, 16],
"faces": {
"north": {"uv": [0, 0, 1.25, 1.25], "texture": "#o"},
"east": {"uv": [0, 0, 3, 2.25], "texture": "#o"},
"south": {"uv": [0, 13, 3, 15], "texture": "#o"},
"west": {"uv": [0, 0, 1, 1.25], "texture": "#o"},
"up": {"uv": [3, 7, 5.25, 9], "texture": "#o"},
"down": {"uv": [0, 0, 1.25, 1], "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

@ -0,0 +1,75 @@
{
"credit": "I made this with the Blockbench",
"parent": "block/cube",
"textures": {
"side": "engineersdecor:blocks/pole/treated_wood_pole_side_texture",
"particle": "engineersdecor:blocks/pole/treated_wood_pole_side_texture",
"top": "engineersdecor:blocks/pole/treated_wood_pole_top_texture"
},
"elements": [
{
"from": [5.75, 5.75, 0],
"to": [10.25, 10.25, 16],
"faces": {
"north": {"uv": [5.25, 5.25, 10.75, 10.75], "texture": "#top", "cullface": "north"},
"south": {"uv": [5.25, 5.25, 10.75, 10.75], "texture": "#top", "cullface": "south"}
}
},
{
"from": [5.75, 10.25, 0],
"to": [10.25, 10.5, 16],
"faces": {
"north": {"uv": [5.25, 10.75, 10.75, 11], "texture": "#top", "cullface": "north"},
"east": {"uv": [10.75, 0, 11, 16], "rotation": 90, "texture": "#side"},
"south": {"uv": [5.25, 5, 10.75, 5.25], "texture": "#top", "cullface": "south"},
"west": {"uv": [5, 0, 5.25, 16], "rotation": 90, "texture": "#side"},
"up": {"uv": [5.25, 0, 10.75, 16], "texture": "#side"}
}
},
{
"from": [5.75, 5.5, 0],
"to": [10.25, 5.75, 16],
"faces": {
"north": {"uv": [5.25, 5, 10.75, 5.25], "texture": "#top", "cullface": "north"},
"east": {"uv": [5, 0, 5.25, 16], "rotation": 90, "texture": "#side"},
"south": {"uv": [5.25, 10.75, 10.75, 11], "texture": "#top", "cullface": "south"},
"west": {"uv": [10.75, 0, 11, 16], "rotation": 90, "texture": "#side"},
"down": {"uv": [5.25, 0, 10.75, 16], "rotation": 180, "texture": "#side"}
}
},
{
"from": [10.25, 5.75, 0],
"to": [10.5, 10.25, 16],
"faces": {
"north": {"uv": [10.75, 5.25, 11, 10.75], "texture": "#top", "cullface": "north"},
"east": {"uv": [5.25, 0, 10.75, 16], "rotation": 90, "texture": "#side"},
"south": {"uv": [10.75, 5.25, 11, 10.75], "texture": "#top", "cullface": "south"},
"up": {"uv": [5, 0, 5.25, 16], "texture": "#side"},
"down": {"uv": [10.75, 0, 11, 16], "rotation": 180, "texture": "#side"}
}
},
{
"from": [5.5, 5.75, 0],
"to": [5.75, 10.25, 16],
"faces": {
"north": {"uv": [5, 5.25, 5.25, 10.75], "texture": "#top", "cullface": "north"},
"south": {"uv": [5, 5.25, 5.25, 10.75], "texture": "#top", "cullface": "south"},
"west": {"uv": [5.25, 0, 10.75, 16], "rotation": 90, "texture": "#side"},
"up": {"uv": [10.75, 0, 11, 16], "texture": "#side"},
"down": {"uv": [5, 0, 5.25, 16], "rotation": 180, "texture": "#side"}
}
}
],
"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

@ -0,0 +1 @@
{ "parent": "block/cube_all", "textures": { "all": "engineersdecor:blocks/slag_brick/slag_brick_texture0" } }

View file

@ -0,0 +1,163 @@
{
"credit": "I made this with the Blockbench",
"textures": {
"side": "engineersdecor:blocks/iestyle/ironsheet_roof",
"particle": "engineersdecor:blocks/iestyle/ironsheet_roof",
"top": "engineersdecor:blocks/iestyle/ironsheet_roof_top"
},
"elements": [
{
"from": [6, 0, 0],
"to": [8, 8, 8],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"west": {"texture": "#top"},
"up": {"texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [14, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top", "cullface": "up"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [0, 0, 14],
"to": [14, 16, 16],
"faces": {
"north": {"texture": "#top"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#side", "cullface": "west"},
"up": {"rotation": 270, "texture": "#top", "cullface": "up"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [10, 0, 0],
"to": [12, 12, 12],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"west": {"texture": "#top"},
"up": {"texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [0, 0, 10],
"to": [10, 12, 12],
"faces": {
"north": {"texture": "#top"},
"west": {"texture": "#side", "cullface": "west"},
"up": {"rotation": 90, "texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [0, 0, 6],
"to": [6, 8, 8],
"faces": {
"north": {"texture": "#top"},
"west": {"texture": "#side", "cullface": "west"},
"up": {"texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [0, 0, 0],
"to": [2, 2, 2],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"west": {"texture": "#side", "cullface": "west"},
"up": {"texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [12, 0, 0],
"to": [14, 14, 14],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"west": {"texture": "#top"},
"up": {"texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [0, 0, 12],
"to": [12, 14, 14],
"faces": {
"north": {"texture": "#top"},
"west": {"texture": "#side", "cullface": "west"},
"up": {"rotation": 270, "texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [8, 0, 0],
"to": [10, 10, 10],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"west": {"texture": "#top"},
"up": {"texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [0, 0, 8],
"to": [8, 10, 10],
"faces": {
"north": {"texture": "#top"},
"west": {"texture": "#side", "cullface": "west"},
"up": {"rotation": 90, "texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [4, 0, 0],
"to": [6, 6, 4],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"west": {"texture": "#top"},
"up": {"texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [0, 0, 4],
"to": [6, 6, 6],
"faces": {
"north": {"texture": "#side"},
"west": {"texture": "#side", "cullface": "west"},
"up": {"texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [0, 0, 2],
"to": [4, 4, 4],
"faces": {
"north": {"texture": "#top"},
"west": {"texture": "#side", "cullface": "west"},
"up": {"texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [2, 0, 0],
"to": [4, 4, 2],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"west": {"texture": "#top"},
"up": {"texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
}
]
}

View file

@ -0,0 +1,45 @@
{
"credit": "I made this with the Blockbench",
"textures": {
"particle": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0",
"side" : "engineersdecor:blocks/clinker_brick/clinker_brick_texture0"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 8, 16],
"faces": {
"north": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "east"},
"south": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#side"},
"down": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "down"}
}
},
{
"from": [8, 8, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 8, 8], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 0, 16, 8], "texture": "#side", "cullface": "east"},
"south": {"uv": [8, 0, 16, 8], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 0, 16, 8], "texture": "#side"},
"up": {"uv": [8, 0, 16, 16], "texture": "#side", "cullface": "up"},
"down": {"uv": [8, 0, 16, 16], "texture": "#side", "cullface": "down"}
}
},
{
"from": [0, 8, 8],
"to": [8, 16, 16],
"faces": {
"north": {"uv": [8, 0, 16, 8], "texture": "#side"},
"east": {"uv": [0, 0, 8, 8], "texture": "#side", "cullface": "east"},
"south": {"uv": [0, 0, 8, 8], "texture": "#side", "cullface": "south"},
"west": {"uv": [8, 0, 16, 8], "texture": "#side", "cullface": "west"},
"up": {"uv": [0, 8, 8, 16], "texture": "#side", "cullface": "up"},
"down": {"uv": [0, 0, 8, 8], "texture": "#side", "cullface": "down"}
}
}
]
}

View file

@ -0,0 +1,99 @@
{
"credit": "I made this with the Blockbench",
"textures": {
"particle": "engineersdecor:blocks/iestyle/ironsheet_roof",
"side": "engineersdecor:blocks/iestyle/ironsheet_roof",
"top": "engineersdecor:blocks/iestyle/ironsheet_roof_top"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 2, 16],
"faces": {
"north": {"texture": "#top", "cullface": "north"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top", "cullface": "west"},
"up": {"texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [2, 2, 2],
"to": [16, 4, 16],
"faces": {
"north": {"texture": "#top"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
},
{
"from": [4, 4, 4],
"to": [16, 6, 16],
"faces": {
"north": {"texture": "#top"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
},
{
"from": [6, 6, 6],
"to": [16, 8, 16],
"faces": {
"north": {"texture": "#top"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
},
{
"from": [8, 8, 8],
"to": [16, 10, 16],
"faces": {
"north": {"texture": "#top"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
},
{
"from": [10, 10, 10],
"to": [16, 12, 16],
"faces": {
"north": {"texture": "#top"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
},
{
"from": [12, 12, 12],
"to": [16, 14, 16],
"faces": {
"north": {"texture": "#top"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
},
{
"from": [14, 14, 14],
"to": [16, 16, 16],
"faces": {
"north": {"texture": "#top"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
}
]
}

View file

@ -0,0 +1,33 @@
{
"credit": "I made this with the Blockbench",
"textures": {
"particle": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0",
"side" : "engineersdecor:blocks/clinker_brick/clinker_brick_texture0"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 8, 16],
"faces": {
"north": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "east"},
"south": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#side"},
"down": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "down"}
}
},
{
"from": [8, 8, 8],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 8, 8], "texture": "#side"},
"east": {"uv": [0, 0, 8, 8], "texture": "#side", "cullface": "east"},
"south": {"uv": [8, 0, 16, 8], "texture": "#side", "cullface": "south"},
"west": {"uv": [8, 0, 16, 8], "texture": "#side"},
"up": {"uv": [8, 8, 16, 16], "texture": "#side", "cullface": "up"},
"down": {"uv": [8, 0, 16, 8], "texture": "#side", "cullface": "down"}
}
}
]
}

View file

@ -0,0 +1,114 @@
{
"credit": "I made this with the Blockbench",
"parent": "block/block",
"textures": {
"side": "engineersdecor:blocks/iestyle/ironsheet_roof",
"particle": "engineersdecor:blocks/iestyle/ironsheet_roof",
"top": "engineersdecor:blocks/iestyle/ironsheet_roof_top"
},
"elements": [
{
"from": [2, 2, 0],
"to": [16, 4, 16],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
},
{
"from": [14, 14, 0],
"to": [16, 16, 16],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top", "cullface": "up"}
}
},
{
"from": [0, 0, 0],
"to": [16, 2, 16],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top", "cullface": "west"},
"up": {"texture": "#top"},
"down": {"texture": "#side", "cullface": "down"}
}
},
{
"from": [4, 4, 0],
"to": [16, 6, 16],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
},
{
"from": [6, 6, 0],
"to": [16, 8, 16],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
},
{
"from": [12, 12, 0],
"to": [16, 14, 16],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
},
{
"from": [10, 10, 0],
"to": [16, 12, 16],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
},
{
"from": [8, 8, 0],
"to": [16, 10, 16],
"faces": {
"north": {"texture": "#side", "cullface": "north"},
"east": {"texture": "#side", "cullface": "east"},
"south": {"texture": "#side", "cullface": "south"},
"west": {"texture": "#top"},
"up": {"texture": "#top"}
}
}
],
"display": {
"thirdperson_lefthand": {
"rotation": [75, -135, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"gui": {
"rotation": [30, 135, 0],
"scale": [0.625, 0.625, 0.625]
},
"head": {
"rotation": [0, -90, 0]
}
}
}

View file

@ -0,0 +1,48 @@
{
"credit": "I made this with the Blockbench",
"parent": "block/block",
"textures": {
"particle": "engineersdecor:blocks/clinker_brick/clinker_brick_texture0",
"side" : "engineersdecor:blocks/clinker_brick/clinker_brick_texture0"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 8, 16],
"faces": {
"north": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "east"},
"south": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#side"},
"down": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "down"}
}
},
{
"from": [8, 8, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 8, 8], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 0, 16, 8], "texture": "#side", "cullface": "east"},
"south": {"uv": [8, 0, 16, 8], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 0, 16, 8], "texture": "#side"},
"up": {"uv": [8, 0, 16, 16], "texture": "#side", "cullface": "up"},
"down": {"uv": [8, 0, 16, 16], "texture": "#side", "cullface": "down"}
}
}
],
"display": {
"thirdperson_lefthand": {
"rotation": [75, -135, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
},
"gui": {
"rotation": [30, 135, 0],
"scale": [0.625, 0.625, 0.625]
},
"head": {
"rotation": [0, -90, 0]
}
}
}

View file

@ -0,0 +1,94 @@
{
"credit": "I made this with the Blockbench",
"parent": "block/cube",
"textures": {
"o": "engineersdecor:blocks/iestyle/treated_wood",
"particle": "engineersdecor:blocks/iestyle/treated_wood"
},
"elements": [
{
"from": [4, 2, 14.625],
"to": [12, 3, 15.625],
"faces": {
"north": {"uv": [0, 11, 15, 13], "texture": "#o"},
"east": {"uv": [12, 13, 14, 15], "texture": "#o"},
"south": {"uv": [1, 13, 16, 15], "texture": "#o"},
"west": {"uv": [13, 11, 15, 13], "texture": "#o"},
"up": {"uv": [1, 11, 16, 13], "texture": "#o"},
"down": {"uv": [1, 13, 16, 15], "texture": "#o"}
}
},
{
"from": [4, 6, 14.625],
"to": [12, 7, 15.625],
"faces": {
"north": {"uv": [1, 6, 14, 8], "texture": "#o"},
"east": {"uv": [6, 14, 8, 16], "texture": "#o"},
"south": {"uv": [3, 13, 16, 15], "texture": "#o"},
"west": {"uv": [7, 9, 9, 11], "texture": "#o"},
"up": {"uv": [0, 13, 13, 15], "texture": "#o"},
"down": {"uv": [3, 13, 16, 15], "texture": "#o"}
}
},
{
"from": [4, 14, 14.625],
"to": [12, 15, 15.625],
"faces": {
"north": {"uv": [0, 4, 14, 6], "texture": "#o"},
"east": {"uv": [7, 3, 9, 5], "texture": "#o"},
"south": {"uv": [2, 6, 16, 8], "texture": "#o"},
"west": {"uv": [2, 6, 4, 8], "texture": "#o"},
"up": {"uv": [0, 4, 14, 6], "texture": "#o"},
"down": {"uv": [2, 6, 16, 8], "texture": "#o"}
}
},
{
"from": [4, 10, 14.625],
"to": [12, 11, 15.625],
"faces": {
"north": {"uv": [3, 5, 16, 7], "texture": "#o"},
"east": {"uv": [1, 13, 3, 15], "texture": "#o"},
"south": {"uv": [0, 11, 13, 13], "texture": "#o"},
"west": {"uv": [0, 11, 2, 13], "texture": "#o"},
"up": {"uv": [0, 9, 13, 11], "texture": "#o"},
"down": {"uv": [0, 11, 13, 13], "texture": "#o"}
}
},
{
"from": [2.75, 0, 14.5],
"to": [4, 16, 16],
"faces": {
"north": {"uv": [2, 0, 4, 16], "texture": "#o"},
"east": {"uv": [2, 0, 4, 16], "texture": "#o"},
"south": {"uv": [5, 0, 7, 16], "texture": "#o"},
"west": {"uv": [8, 0, 11, 16], "texture": "#o"},
"up": {"uv": [11, 9, 13, 12], "texture": "#o"},
"down": {"uv": [13, 9, 15, 12], "texture": "#o"}
}
},
{
"from": [12, 0, 14.5],
"to": [13.25, 16, 16],
"faces": {
"north": {"uv": [1, 0, 3, 16], "texture": "#o"},
"east": {"uv": [5, 0, 7, 16], "texture": "#o"},
"south": {"uv": [13, 0, 15, 16], "texture": "#o"},
"west": {"uv": [1, 0, 3, 16], "texture": "#o"},
"up": {"uv": [6, 6, 8, 9], "texture": "#o"},
"down": {"uv": [8, 5, 10, 8], "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

@ -0,0 +1,190 @@
{
"credit": "I made this with the Blockbench",
"parent": "block/cube",
"textures": {
"o": "engineersdecor:blocks/iestyle/treated_wood",
"particle": "engineersdecor:blocks/iestyle/treated_wood"
},
"elements": [
{
"from": [1, 0, 1],
"to": [3, 14, 3],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o", "cullface": "down"}
}
},
{
"from": [13, 0, 1],
"to": [15, 14, 3],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o", "cullface": "down"}
}
},
{
"from": [13, 0, 13],
"to": [15, 14, 15],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o", "cullface": "down"}
}
},
{
"from": [1, 0, 13],
"to": [3, 14, 15],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o", "cullface": "down"}
}
},
{
"from": [0, 14, 0],
"to": [16, 15.875, 16],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o"}
}
},
{
"from": [0.25, 15.875, 0.25],
"to": [15.75, 16, 15.75],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o"}
}
},
{
"from": [13, 13.5, 3],
"to": [15, 14, 5],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o"}
}
},
{
"from": [13, 13.5, 11],
"to": [15, 14, 13],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o"}
}
},
{
"from": [1, 13.5, 11],
"to": [3, 14, 13],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o"}
}
},
{
"from": [1, 13.5, 3],
"to": [3, 14, 5],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o"}
}
},
{
"from": [11, 13.5, 1],
"to": [13, 14, 3],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o"}
}
},
{
"from": [3, 13.5, 1],
"to": [5, 14, 3],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o"}
}
},
{
"from": [11, 13.5, 13],
"to": [13, 14, 15],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"texture": "#o"}
}
},
{
"from": [3, 13.5, 13],
"to": [5, 14, 15],
"faces": {
"north": {"texture": "#o"},
"east": {"texture": "#o"},
"south": {"texture": "#o"},
"west": {"texture": "#o"},
"up": {"texture": "#o"},
"down": {"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

@ -0,0 +1,132 @@
[
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "itemSlag"
},
"name": "itemSlag"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "plankTreatedWood"
},
"name": "plankTreatedWood"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "slabTreatedWood"
},
"name": "slabTreatedWood"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "stickTreatedWood"
},
"name": "stickTreatedWood"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "plateSteel"
},
"name": "plateSteel"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "stickSteel"
},
"name": "stickSteel"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "stickIron"
},
"name": "stickIron"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "plankWood"
},
"name": "plankWood"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "stickWood"
},
"name": "stickWood"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "sand"
},
"name": "sand"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "sandstone"
},
"name": "sandstone"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "bricksStone"
},
"name": "bricksStone"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "ingotBrick"
},
"name": "ingotBrick"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "ingotBrickNether"
},
"name": "ingotBrickNether"
},
{
"ingredient": [
{
"type": "forge:ore_dict",
"ore": "ingotBrick"
},
{
"type": "forge:ore_dict",
"ore": "ingotBrickNether"
}
],
"name": "ingotAnyBrick"
},
{
"ingredient": [
{
"type": "forge:ore_dict",
"ore": "stickIron"
},
{
"type": "forge:ore_dict",
"ore": "stickSteel"
}
],
"name": "stickFerroMetal"
}
]

View file

@ -0,0 +1,5 @@
{
"conditions": {
"grc": "wile.engineersdecor.detail.RecipeCondModSpecific"
}
}

View file

@ -0,0 +1,28 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:clinker_brick_block"
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
"BBB",
"BNB",
"BBB"
],
"key": {
"B": {
"item": "#ingotAnyBrick",
"data": 0
},
"N": {
"item": "minecraft:brick_block",
"data": 0
}
},
"result": {
"item": "engineersdecor:clinker_brick_block",
"count": 4
}
}

View file

@ -0,0 +1,24 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:clinker_brick_stairs"
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
"C ",
"CC ",
"CCC"
],
"key": {
"C": {
"item": "engineersdecor:clinker_brick_block",
"data": 0
}
},
"result": {
"item": "engineersdecor:clinker_brick_stairs",
"count": 9
}
}

View file

@ -0,0 +1,23 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:clinker_brick_block"
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
"SS",
"SS"
],
"key": {
"S": {
"item": "engineersdecor:clinker_brick_stairs",
"data": 0
}
},
"result": {
"item": "engineersdecor:clinker_brick_block",
"count": 3
}
}

View file

@ -0,0 +1,25 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:metal_rung_ladder",
"required": ["immersiveengineering:material"]
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
"S S",
"SSS",
" "
],
"key": {
"S": {
"item": "#stickFerroMetal",
"data": 0
}
},
"result": {
"item": "engineersdecor:metal_rung_ladder",
"count": 4
}
}

View file

@ -0,0 +1,25 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:metal_rung_steps",
"required": ["immersiveengineering:material"]
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
" SS",
"SS ",
" SS"
],
"key": {
"S": {
"item": "#stickFerroMetal",
"data": 0
}
},
"result": {
"item": "engineersdecor:metal_rung_steps",
"count": 4
}
}

View file

@ -0,0 +1,29 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:clinker_brick_block",
"required": ["immersiveengineering:material"]
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
"BBB",
"BSB",
"BBB"
],
"key": {
"B": {
"item": "#ingotBrick",
"data": 0
},
"S": {
"item": "#itemSlag",
"data": 0
}
},
"result": {
"item": "engineersdecor:slag_brick_block",
"count": 4
}
}

View file

@ -0,0 +1,29 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:clinker_brick_block",
"missing": ["immersiveengineering:material"]
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
"BBB",
"BSB",
"BBB"
],
"key": {
"B": {
"item": "#ingotBrick",
"data": 0
},
"S": {
"item": "minecraft:nether_brick",
"data": 0
}
},
"result": {
"item": "engineersdecor:slag_brick_block",
"count": 4
}
}

View file

@ -0,0 +1,24 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:slag_brick_stairs"
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
"C ",
"CC ",
"CCC"
],
"key": {
"C": {
"item": "engineersdecor:slag_brick_block",
"data": 0
}
},
"result": {
"item": "engineersdecor:slag_brick_stairs",
"count": 9
}
}

View file

@ -0,0 +1,25 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:treated_wood_ladder",
"required": ["immersiveengineering:material"]
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
"S S",
"SSS",
"S S"
],
"key": {
"S": {
"item": "#stickTreatedWood",
"data": 0
}
},
"result": {
"item": "engineersdecor:treated_wood_ladder",
"count": 4
}
}

View file

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

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 724 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 740 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 734 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 707 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 729 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 742 B

View file

@ -0,0 +1,16 @@
[
{
"modid": "engineersdecor",
"name": "Engineer's Decor",
"description": "Adds cosmetic blocks for the engineer's workshop, factory and home.",
"version": "${version}",
"mcversion": "${mcversion}",
"url": "https://github.com/stfwi/engineers-decor/",
"authorList": ["wile"],
"credits": "The Forge smiths, the Modders of the World.",
"logoFile": "assets/engineersdecor/logo.png",
"screenshots": [],
"useDependencyInformation": false,
"dependencies": ["Forge"]
}
]

View file

@ -0,0 +1,7 @@
{
"pack": {
"description": "engineersdecor resources",
"pack_format": 3,
"_comment": "A pack_format of 3 should be used starting with Minecraft 1.11. All resources, including language files, should be lowercase (eg: en_us.lang). A pack_format of 2 will load your mod resources with LegacyV2Adapter, which requires language files to have uppercase letters (eg: en_US.lang)."
}
}