Added check valve, double-T supports with auto-connections. Block/te registration adapted.
|
@ -4,4 +4,4 @@ org.gradle.jvmargs=-Xmx8G
|
|||
version_minecraft=1.12.2
|
||||
version_forge=14.23.5.2768
|
||||
version_jei=4.10.0.198
|
||||
version_engineersdecor=1.0.4-b4
|
||||
version_engineersdecor=1.0.4-b5
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
|
||||
"1.12.2": {
|
||||
"1.0.4-b5": "[A] Horizontal steel double-T support beam with pole connections.\n[A] Added fluid pipe check valve (straight, conducts only one way).\n[M] Internal registration block/te handling changed.",
|
||||
"1.0.4-b4": "[F] Clinker/slag brick wall side cullfacing disabled to prevent texture leaks when connecting to concrete walls.\n[F] Unused treated wood pole texture regions filled (optifine).\n[F] Using mipped cutout format for window multi-layer model (issue #19, thanks rixmswey for reporting and details).\n[M] Recipe tuning, added standalone recipe for all mod blocks.\n[M] In-game CTRL-SHIFT tooltip documentation updated.\n[M] Panzer glass block: Ambient occlusion and light opacity tuned.\n[M] Stairs: Light opacity tuned.\n[A] Tooltip documentation added for mod stairs.\n[E] Horizontal steel double-T support beam (config:experimental).",
|
||||
"1.0.4-b3": "[A] Added thin (4x4x16) and thick (6x6x16) steel hollow poles.\n[A] Added support head/foot components for thin and thick steel poles.",
|
||||
"1.0.4-b2": "[A] Added position dependent texture variation to clinker wall, slag brick wall and rebar concrete wall.",
|
||||
|
@ -28,6 +29,6 @@
|
|||
},
|
||||
"promos": {
|
||||
"1.12.2-recommended": "1.0.3",
|
||||
"1.12.2-latest": "1.0.4-b4"
|
||||
"1.12.2-latest": "1.0.4-b5"
|
||||
}
|
||||
}
|
|
@ -10,6 +10,10 @@ Mod sources for Minecraft version 1.12.2.
|
|||
----
|
||||
## Revision history
|
||||
|
||||
- v1.0.4-b5 [A] Horizontal steel double-T support beam with pole connections.
|
||||
[A] Added fluid pipe check valve (straight, conducts only one way).
|
||||
[M] Internal registration block/te handling changed.
|
||||
|
||||
- v1.0.4-b4 [F] Clinker/slag brick wall side cullfacing disabled to prevent
|
||||
texture leaks when connecting to concrete walls.
|
||||
[F] Unused treated wood pole texture regions filled (optifine).
|
||||
|
|
|
@ -1,15 +1,19 @@
|
|||
/*
|
||||
* @file BlockDecorDirected.java
|
||||
* @file BlockDecorHorizontalSupport.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.
|
||||
* Horizontal ceiling support. Symmetric x axis, fixed in
|
||||
* xz plane, therefore boolean placement state.
|
||||
*/
|
||||
package wile.engineersdecor.blocks;
|
||||
|
||||
import net.minecraft.block.SoundType;
|
||||
import net.minecraft.block.properties.PropertyBool;
|
||||
import net.minecraft.block.properties.PropertyInteger;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import wile.engineersdecor.detail.ModAuxiliaries;
|
||||
import net.minecraft.block.state.BlockStateContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
|
@ -31,7 +35,10 @@ import java.util.Arrays;
|
|||
|
||||
public class BlockDecorHorizontalSupport extends BlockDecor
|
||||
{
|
||||
public static final PropertyBool EASTWEST = PropertyBool.create("eastwest");
|
||||
public static final PropertyBool EASTWEST = PropertyBool.create("eastwest");
|
||||
public static final PropertyBool LEFTBEAM = PropertyBool.create("leftbeam");
|
||||
public static final PropertyBool RIGHTBEAM = PropertyBool.create("rightbeam");
|
||||
public static final PropertyInteger DOWNCONNECT = PropertyInteger.create("downconnect", 0, 2);
|
||||
protected final ArrayList<AxisAlignedBB> AABBs;
|
||||
|
||||
public BlockDecorHorizontalSupport(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB)
|
||||
|
@ -39,10 +46,13 @@ public class BlockDecorHorizontalSupport extends BlockDecor
|
|||
super(registryName, config|CFG_HORIZIONTAL, material, hardness, resistance, sound);
|
||||
final boolean is_horizontal = ((config & CFG_HORIZIONTAL)!=0);
|
||||
AABBs = new ArrayList<AxisAlignedBB>(Arrays.asList(
|
||||
// Effective bounding box
|
||||
ModAuxiliaries.getRotatedAABB(unrotatedAABB.grow(2.0/16, 0, 0), EnumFacing.NORTH, true),
|
||||
ModAuxiliaries.getRotatedAABB(unrotatedAABB.grow(2.0/16, 0, 0), EnumFacing.WEST, true),
|
||||
// Displayed bounding box
|
||||
ModAuxiliaries.getRotatedAABB(unrotatedAABB, EnumFacing.NORTH, true),
|
||||
ModAuxiliaries.getRotatedAABB(unrotatedAABB, EnumFacing.WEST, true)
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -66,6 +76,11 @@ public class BlockDecorHorizontalSupport extends BlockDecor
|
|||
public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, BlockPos pos, EnumFacing face)
|
||||
{ return BlockFaceShape.UNDEFINED; }
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SuppressWarnings("deprecation")
|
||||
public AxisAlignedBB getSelectedBoundingBox(IBlockState state, World world, BlockPos pos)
|
||||
{ return AABBs.get(state.getValue(EASTWEST) ? 0x3 : 0x2).offset(pos); }
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
|
||||
|
@ -78,15 +93,39 @@ public class BlockDecorHorizontalSupport extends BlockDecor
|
|||
|
||||
@Override
|
||||
public IBlockState getStateFromMeta(int meta)
|
||||
{ return this.getDefaultState().withProperty(EASTWEST, ((meta & 0x1) != 0)); }
|
||||
{ return getDefaultState().withProperty(EASTWEST, ((meta & 0x1) != 0)); }
|
||||
|
||||
@Override
|
||||
public int getMetaFromState(IBlockState state)
|
||||
{ return state.getValue(EASTWEST) ? 0x1 : 0x0; }
|
||||
{ return (state.getValue(EASTWEST) ? 0x1:0x0); }
|
||||
|
||||
@Override
|
||||
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos)
|
||||
{
|
||||
boolean ew = state.getValue(EASTWEST);
|
||||
final IBlockState rstate = world.getBlockState((!ew) ? (pos.east()) : (pos.south()) );
|
||||
final IBlockState lstate = world.getBlockState((!ew) ? (pos.west()) : (pos.north()) );
|
||||
final IBlockState dstate = world.getBlockState(pos.down());
|
||||
int down_connector = 0;
|
||||
if((dstate.getBlock() instanceof BlockDecorStraightPole)) {
|
||||
final EnumFacing dfacing = dstate.getValue(BlockDecorStraightPole.FACING);
|
||||
final BlockDecorStraightPole pole = (BlockDecorStraightPole)dstate.getBlock();
|
||||
if((dfacing.getAxis() == EnumFacing.Axis.Y)) {
|
||||
if((pole==ModBlocks.THICK_STEEL_POLE) || ((pole==ModBlocks.THICK_STEEL_POLE_HEAD) && (dfacing==EnumFacing.UP))) {
|
||||
down_connector = 2;
|
||||
} else if((pole==ModBlocks.THIN_STEEL_POLE) || ((pole==ModBlocks.THIN_STEEL_POLE_HEAD) && (dfacing==EnumFacing.UP))) {
|
||||
down_connector = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return state.withProperty(RIGHTBEAM, (rstate.getBlock()==this) && (rstate.getValue(EASTWEST) != ew))
|
||||
.withProperty(LEFTBEAM , (lstate.getBlock()==this) && (lstate.getValue(EASTWEST) != ew))
|
||||
.withProperty(DOWNCONNECT , down_connector);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockStateContainer createBlockState()
|
||||
{ return new BlockStateContainer(this, EASTWEST); }
|
||||
{ return new BlockStateContainer(this, EASTWEST, RIGHTBEAM, LEFTBEAM, DOWNCONNECT); }
|
||||
|
||||
@Override
|
||||
public IBlockState withRotation(IBlockState state, Rotation rot)
|
||||
|
@ -104,9 +143,6 @@ public class BlockDecorHorizontalSupport extends BlockDecor
|
|||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
|
||||
{
|
||||
facing = placer.getHorizontalFacing();
|
||||
return getDefaultState().withProperty(EASTWEST, (facing==EnumFacing.EAST)||(facing==EnumFacing.WEST));
|
||||
}
|
||||
{ return getActualState(getDefaultState().withProperty(EASTWEST, (placer.getHorizontalFacing().getAxis()==EnumFacing.Axis.X)), world, pos); }
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,198 @@
|
|||
/*
|
||||
* @file BlockDecorPipeValve.java
|
||||
* @author Stefan Wilhelm (wile)
|
||||
* @copyright (C) 2019 Stefan Wilhelm
|
||||
* @license MIT (see https://opensource.org/licenses/MIT)
|
||||
*
|
||||
* Basically a piece of pipe that does not connect to
|
||||
* pipes on the side, and conducts fluids only in one way.
|
||||
*/
|
||||
package wile.engineersdecor.blocks;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.SoundType;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidTankProperties;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
|
||||
public class BlockDecorPipeValve extends BlockDecorDirected
|
||||
{
|
||||
public BlockDecorPipeValve(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound, @Nonnull AxisAlignedBB unrotatedAABB)
|
||||
{ super(registryName, config, material, hardness, resistance, sound, unrotatedAABB); }
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
|
||||
{
|
||||
IBlockState state = super.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, meta, placer);
|
||||
if(!placer.isSneaking()) state = state.withProperty(FACING, state.getValue(FACING).getOpposite());
|
||||
return state;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos fromPos)
|
||||
{
|
||||
EnumFacing fc = state.getValue(FACING);
|
||||
if(fromPos.equals(pos.offset(fc)) || fromPos.equals(pos.offset(fc.getOpposite()))) update_te(world, state, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
|
||||
{
|
||||
update_te(world, state, pos);
|
||||
world.notifyNeighborsOfStateChange(pos, this, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity(IBlockState state)
|
||||
{ return true; }
|
||||
|
||||
@Nullable
|
||||
public TileEntity createTileEntity(World world, IBlockState state)
|
||||
{ return new BlockDecorPipeValve.BTileEntity(); }
|
||||
|
||||
private void update_te(World world, IBlockState state, BlockPos pos)
|
||||
{
|
||||
TileEntity te = world.getTileEntity(pos);
|
||||
if(te instanceof BlockDecorPipeValve.BTileEntity) ((BlockDecorPipeValve.BTileEntity)te).block_reconfigure(state.getValue(FACING));
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
// Tile entity
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
public static class BTileEntity extends TileEntity implements IFluidHandler, IFluidTankProperties, ICapabilityProvider
|
||||
{
|
||||
public static final int FLUID_CAPACITY_MB = 1000; // likely also the max flow per tick
|
||||
private static final BackFlowHandler back_flow_handler_ = new BackFlowHandler();
|
||||
private final IFluidTankProperties[] fluid_props_ = {this};
|
||||
private EnumFacing block_facing_ = EnumFacing.NORTH;
|
||||
private boolean filling = false;
|
||||
|
||||
public BTileEntity()
|
||||
{}
|
||||
|
||||
public void block_reconfigure(EnumFacing facing)
|
||||
{ block_facing_ = facing; }
|
||||
|
||||
// TileEntity ------------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public boolean shouldRefresh(World world, BlockPos pos, IBlockState os, IBlockState ns)
|
||||
{ return (os.getBlock() != ns.getBlock()) || (!(ns.getBlock() instanceof BlockDecorPipeValve)); }
|
||||
|
||||
@Override
|
||||
public void onLoad()
|
||||
{
|
||||
if(!hasWorld()) return;
|
||||
final IBlockState state = world.getBlockState(pos);
|
||||
if((!(state.getBlock() instanceof BlockDecorPipeValve))) return;
|
||||
block_reconfigure(state.getValue(FACING));
|
||||
}
|
||||
|
||||
// ICapabilityProvider --------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable EnumFacing facing)
|
||||
{ return ((capability==CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) && ((facing==block_facing_) || (facing==block_facing_.getOpposite()))); }
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
@Nullable
|
||||
public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable EnumFacing facing)
|
||||
{
|
||||
if(capability!=CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) return super.getCapability(capability, facing);
|
||||
return (facing==block_facing_) ? ((T)back_flow_handler_) : (((T)this));
|
||||
}
|
||||
|
||||
// IFluidHandler/IFluidTankProperties ---------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public int fill(FluidStack resource, boolean doFill)
|
||||
{
|
||||
if(filling) return 0;
|
||||
final TileEntity te = world.getTileEntity(pos.offset(block_facing_));
|
||||
if(te == null) return 0;
|
||||
final IFluidHandler fh = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, block_facing_.getOpposite());
|
||||
if(fh==null) return 0;
|
||||
filling = true; // in case someone does not check the cap, but just "forwards back" what is beeing filled right now.
|
||||
int n_filled = fh.fill(resource, doFill);
|
||||
filling = false;
|
||||
return n_filled;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public FluidStack drain(FluidStack resource, boolean doDrain)
|
||||
{ return null; }
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public FluidStack drain(int maxDrain, boolean doDrain)
|
||||
{ return null; }
|
||||
|
||||
@Override
|
||||
public IFluidTankProperties[] getTankProperties()
|
||||
{ return fluid_props_; }
|
||||
|
||||
// IFluidTankProperties --
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public FluidStack getContents()
|
||||
{ return null; }
|
||||
|
||||
public int getCapacity()
|
||||
{ return FLUID_CAPACITY_MB; }
|
||||
|
||||
@Override
|
||||
public boolean canFill()
|
||||
{ return true; }
|
||||
|
||||
@Override
|
||||
public boolean canDrain()
|
||||
{ return false; }
|
||||
|
||||
@Override
|
||||
public boolean canFillFluidType(FluidStack fluidStack)
|
||||
{ return true; }
|
||||
|
||||
@Override
|
||||
public boolean canDrainFluidType(FluidStack fluidStack)
|
||||
{ return false; }
|
||||
|
||||
// Back flow prevention handler --
|
||||
|
||||
private static class BackFlowHandler implements IFluidHandler, IFluidTankProperties
|
||||
{
|
||||
private final IFluidTankProperties[] props_ = {this};
|
||||
@Override public IFluidTankProperties[] getTankProperties() { return props_; }
|
||||
@Override public int fill(FluidStack resource, boolean doFill) { return 0; }
|
||||
@Override @Nullable public FluidStack drain(FluidStack resource, boolean doDrain) { return null; }
|
||||
@Override @Nullable public FluidStack drain(int maxDrain, boolean doDrain) { return null; }
|
||||
@Override @Nullable public FluidStack getContents() { return null; }
|
||||
@Override public int getCapacity() { return 0; }
|
||||
@Override public boolean canFill() { return false; }
|
||||
@Override public boolean canDrain() { return false; }
|
||||
@Override public boolean canFillFluidType(FluidStack fluidStack) { return false; }
|
||||
@Override public boolean canDrainFluidType(FluidStack fluidStack) { return false; }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -12,6 +12,7 @@
|
|||
*/
|
||||
package wile.engineersdecor.blocks;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import wile.engineersdecor.ModEngineersDecor;
|
||||
import wile.engineersdecor.detail.ModAuxiliaries;
|
||||
import wile.engineersdecor.detail.ModConfig;
|
||||
|
@ -35,6 +36,10 @@ import javax.annotation.Nonnull;
|
|||
@SuppressWarnings("unused")
|
||||
public class ModBlocks
|
||||
{
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
//-- Blocks
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
public static final BlockDecorFull CLINKER_BRICK_BLOCK = new BlockDecorFull("clinker_brick_block", 0, Material.ROCK, 2f, 50f, SoundType.STONE);
|
||||
public static final BlockDecorStairs CLINKER_BRICK_STAIRS = new BlockDecorStairs("clinker_brick_stairs", CLINKER_BRICK_BLOCK.getDefaultState());
|
||||
public static final BlockDecorWall CLINKER_BRICK_WALL = new BlockDecorWall("clinker_brick_wall", BlockDecor.CFG_DEFAULT, Material.ROCK, 8f, 50f, SoundType.STONE);
|
||||
|
@ -176,9 +181,40 @@ public class ModBlocks
|
|||
ModAuxiliaries.getPixeledAABB(5,11,0, 11,16,16)
|
||||
);
|
||||
|
||||
public static final BlockDecorPipeValve STRAIGHT_PIPE_VALVE = new BlockDecorPipeValve(
|
||||
"straight_pipe_valve",
|
||||
BlockDecor.CFG_CUTOUT|BlockDecor.CFG_FACING_PLACEMENT,
|
||||
Material.IRON, 1.0f, 15f, SoundType.METAL,
|
||||
ModAuxiliaries.getPixeledAABB(4,4,0, 12,12,16)
|
||||
);
|
||||
|
||||
private static final Block modBlocks[] = {
|
||||
TREATED_WOOD_CRAFTING_TABLE,
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
//-- Tile entities
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
private static class TileEntityRegistrationData
|
||||
{
|
||||
public final Class<? extends TileEntity> clazz;
|
||||
public final ResourceLocation key;
|
||||
public TileEntityRegistrationData(Class<? extends TileEntity> c, String k) { clazz=c; key = new ResourceLocation(ModEngineersDecor.MODID, k); }
|
||||
}
|
||||
|
||||
private static final TileEntityRegistrationData TREATED_WOOD_CRAFTING_TABLE_TEI = new TileEntityRegistrationData(
|
||||
BlockDecorCraftingTable.BTileEntity.class, "te_crafting_table"
|
||||
);
|
||||
private static final TileEntityRegistrationData SMALL_LAB_FURNACE_TEI = new TileEntityRegistrationData(
|
||||
BlockDecorFurnace.BTileEntity.class, "te_small_lab_furnace"
|
||||
);
|
||||
private static final TileEntityRegistrationData STRAIGHT_PIPE_VALVE_TEI = new TileEntityRegistrationData(
|
||||
BlockDecorPipeValve.BTileEntity.class, "te_pipe_valve"
|
||||
);
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
//-- Registration list
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
private static final Object content[] = {
|
||||
TREATED_WOOD_CRAFTING_TABLE, TREATED_WOOD_CRAFTING_TABLE_TEI,
|
||||
CLINKER_BRICK_BLOCK,
|
||||
CLINKER_BRICK_STAIRS,
|
||||
CLINKER_BRICK_WALL,
|
||||
|
@ -201,7 +237,7 @@ public class ModBlocks
|
|||
TREATED_WOOD_WINDOW,
|
||||
TREATED_WOOD_WINDOWSILL,
|
||||
INSET_LIGHT_IRON,
|
||||
SMALL_LAB_FURNACE,
|
||||
SMALL_LAB_FURNACE, SMALL_LAB_FURNACE_TEI,
|
||||
STEEL_FRAMED_WINDOW,
|
||||
TREATED_WOOD_POLE_SUPPORT,
|
||||
TREATED_WOOD_POLE_HEAD,
|
||||
|
@ -210,13 +246,19 @@ public class ModBlocks
|
|||
THICK_STEEL_POLE,
|
||||
THIN_STEEL_POLE_HEAD,
|
||||
THICK_STEEL_POLE_HEAD,
|
||||
STEEL_DOUBLE_T_SUPPORT
|
||||
STEEL_DOUBLE_T_SUPPORT,
|
||||
STRAIGHT_PIPE_VALVE, STRAIGHT_PIPE_VALVE_TEI
|
||||
};
|
||||
|
||||
private static final Block devBlocks[] = {
|
||||
private static final Object dev_content[] = {
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
//-- Init
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
private static ArrayList<Block> registeredBlocks = new ArrayList<>();
|
||||
private static ArrayList<TileEntityRegistrationData> registeredTileEntityInits = new ArrayList<>();
|
||||
|
||||
@Nonnull
|
||||
public static List<Block> getRegisteredBlocks()
|
||||
|
@ -226,28 +268,33 @@ public class ModBlocks
|
|||
public static final void registerBlocks(RegistryEvent.Register<Block> event)
|
||||
{
|
||||
// Config based registry selection
|
||||
int num_registrations_skipped = 0;
|
||||
ArrayList<Block> allBlocks = new ArrayList<>();
|
||||
Collections.addAll(allBlocks, modBlocks);
|
||||
//if(Loader.isModLoaded("immersiveengineering")){}
|
||||
if(ModConfig.zmisc.with_experimental) Collections.addAll(allBlocks, devBlocks);
|
||||
int num_block_registrations_skipped = 0;
|
||||
final boolean woor = ModConfig.isWithoutOptOutRegistration();
|
||||
for(Block e:allBlocks) {
|
||||
if((!woor) || (!ModConfig.isOptedOut(e))) {
|
||||
registeredBlocks.add(e);
|
||||
} else {
|
||||
++num_registrations_skipped;
|
||||
for(Object e:content) {
|
||||
if(e instanceof Block) {
|
||||
if((!woor) || (!ModConfig.isOptedOut((Block)e))) {
|
||||
registeredBlocks.add((Block) e);
|
||||
} else {
|
||||
++num_block_registrations_skipped;
|
||||
}
|
||||
} else if(e instanceof TileEntityRegistrationData) {
|
||||
registeredTileEntityInits.add((TileEntityRegistrationData)e);
|
||||
}
|
||||
}
|
||||
if(ModConfig.zmisc.with_experimental) {
|
||||
for(Object e:dev_content) {
|
||||
if(e instanceof Block) {
|
||||
registeredBlocks.add((Block) e);
|
||||
} else if(e instanceof TileEntityRegistrationData) {
|
||||
registeredTileEntityInits.add((TileEntityRegistrationData) e);
|
||||
}
|
||||
}
|
||||
}
|
||||
for(Block e:registeredBlocks) event.getRegistry().register(e);
|
||||
ModEngineersDecor.logger.info("Registered " + Integer.toString(registeredBlocks.size()) + " blocks.");
|
||||
if(num_registrations_skipped > 0) {
|
||||
ModEngineersDecor.logger.info("Skipped registration of " + num_registrations_skipped + " blocks due to no-register-opt-out config.");
|
||||
}
|
||||
|
||||
// TEs
|
||||
GameRegistry.registerTileEntity(BlockDecorCraftingTable.BTileEntity.class, new ResourceLocation(ModEngineersDecor.MODID, "te_crafting_table"));
|
||||
GameRegistry.registerTileEntity(BlockDecorFurnace.BTileEntity.class, new ResourceLocation(ModEngineersDecor.MODID, "te_small_lab_furnace"));
|
||||
if(num_block_registrations_skipped > 0) ModEngineersDecor.logger.info("Skipped registration of " + num_block_registrations_skipped + " blocks.");
|
||||
for(TileEntityRegistrationData e:registeredTileEntityInits) GameRegistry.registerTileEntity(e.clazz, e.key);
|
||||
ModEngineersDecor.logger.info("Registered " + Integer.toString(registeredTileEntityInits.size()) + " tile entities.");
|
||||
}
|
||||
|
||||
// Invoked from ClientProxy.registerModels()
|
||||
|
|
|
@ -144,4 +144,6 @@ public class ModAuxiliaries
|
|||
}
|
||||
return bb;
|
||||
}
|
||||
|
||||
public interface IExperimentalFeature{}
|
||||
}
|
||||
|
|
|
@ -229,6 +229,7 @@ public class ModConfig
|
|||
{
|
||||
if((block == null) || (optout==null)) return true;
|
||||
if(block == ModBlocks.SIGN_MODLOGO) return true;
|
||||
if((!zmisc.with_experimental) && (block instanceof ModAuxiliaries.IExperimentalFeature)) return true;
|
||||
final String rn = block.getRegistryName().getPath();
|
||||
if(optout.without_clinker_bricks && rn.startsWith("clinker_brick_")) return true;
|
||||
if(optout.without_slag_bricks && rn.startsWith("slag_brick_")) return true;
|
||||
|
|
|
@ -11,7 +11,18 @@
|
|||
},
|
||||
"variants": {
|
||||
"normal": [{}],
|
||||
"inventory": [{}],
|
||||
"eastwest": { "false":{"y":0}, "true": {"y":90}},
|
||||
"inventory": [{}]
|
||||
"rightbeam": { "false":{}, "true": {
|
||||
"submodel": {"rsteelsupport": { "model": "engineersdecor:hsupport/steel_double_t_support_xconnect_model", "y": 0 }}
|
||||
}},
|
||||
"leftbeam": { "false":{}, "true": {
|
||||
"submodel": {"lsteelsupport": { "model": "engineersdecor:hsupport/steel_double_t_support_xconnect_model", "y": 180 }}
|
||||
}},
|
||||
"downconnect": {
|
||||
"0": {},
|
||||
"1": { "submodel": {"dthinpole": { "model": "engineersdecor:hsupport/steel_double_t_support_xconnect_thin_pole_model"}} },
|
||||
"2": { "submodel": {"dthickpole": { "model": "engineersdecor:hsupport/steel_double_t_support_xconnect_thick_pole_model"}} }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": { "model": "engineersdecor:pipe/straight_pipe_valve_model" },
|
||||
"variants": {
|
||||
"normal": [{}],
|
||||
"inventory": [{}],
|
||||
"facing": { "north":{"y":0}, "south":{"y":180}, "west":{"y":270}, "east":{"y":90}, "up": {"x":-90}, "down": {"x":90} }
|
||||
}
|
||||
}
|
|
@ -64,6 +64,8 @@ tile.engineersdecor.thin_steel_pole_head.name=Straight thin steel pole head/foot
|
|||
tile.engineersdecor.thin_steel_pole_head.help=§6Steel part fitting as foot or head of the thin steel pole (4x4x16).
|
||||
tile.engineersdecor.thick_steel_pole_head.name=Straight thick steel pole head/foot
|
||||
tile.engineersdecor.thick_steel_pole_head.help=§6Steel part fitting as foot or head of the thick steel pole (6x6x16).
|
||||
tile.engineersdecor.steel_double_t_support.name=Steel double T support
|
||||
tile.engineersdecor.steel_double_t_support.help=§6Horizontal ceiling support bream fragment.
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
tile.engineersdecor.treated_wood_table.name=Treated wood table
|
||||
tile.engineersdecor.treated_wood_table.help=§6Robust four-legged wood table.§r Indoor and outdoor use.
|
||||
|
@ -92,12 +94,11 @@ tile.engineersdecor.small_lab_furnace.help=§6Small metal cased lab kiln.§r Sol
|
|||
and fuel. Place an external heater into a aux slot and connect power for electrical \
|
||||
smelting speed boost.
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
tile.engineersdecor.steel_double_t_support.name=Steel double T support
|
||||
tile.engineersdecor.steel_double_t_support.help=§6Horizontal ceiling support bream fragment.
|
||||
tile.engineersdecor.straight_pipe_valve.name=Fluid pipe check valve
|
||||
tile.engineersdecor.straight_pipe_valve.help=§6Straight fluid pipe fragment.§r Conducts fluids only in one direction. Does not connect to the sides. Sneak to place in reverse direction.
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
tile.engineersdecor.sign_decor.name=Sign plate (Engineer's decor)
|
||||
tile.engineersdecor.sign_decor.help=§6This should not be craftable or visible in JEI. Used for creative tab and screenshots.
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
# EOF
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -64,6 +64,8 @@ tile.engineersdecor.thin_steel_pole_head.name=Straight thin steel pole head/foot
|
|||
#tile.engineersdecor.thin_steel_pole_head.help=§6Steel part fitting as foot or head of the thin steel pole (4x4x16).
|
||||
tile.engineersdecor.thick_steel_pole_head.name=Straight thick steel pole head/foot
|
||||
#tile.engineersdecor.thick_steel_pole_head.help=§6Steel part fitting as foot or head of the thick steel pole (6x6x16).
|
||||
tile.engineersdecor.steel_double_t_support.name=Steel double T support
|
||||
#tile.engineersdecor.steel_double_t_support.help=§6Horizontal ceiling support bream fragment.
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
tile.engineersdecor.treated_wood_table.name=Стол из обработанного дерева
|
||||
tile.engineersdecor.treated_wood_table.help=§6Прочный деревянный стол с четырьмя ножками .§r Для использования в помещении и на улице.
|
||||
|
@ -85,12 +87,11 @@ tile.engineersdecor.steel_framed_window.name=Окно со стальной ра
|
|||
tile.engineersdecor.small_lab_furnace.name=Компактная лабораторная печь
|
||||
tile.engineersdecor.small_lab_furnace.help=§6Лабораторная печь в металлическом корпусе.§r Подача твёрдого топлива - сверху. Немного горячее чем каменная, поэтому быстрее. Два внутренних слота для ввода, выхода и топлива.
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
tile.engineersdecor.steel_double_t_support.name=Steel double T support
|
||||
#tile.engineersdecor.steel_double_t_support.help=§6Horizontal ceiling support bream fragment.
|
||||
tile.engineersdecor.straight_pipe_valve.name=Straight fluid valve
|
||||
#tile.engineersdecor.straight_pipe_valve.help=§6Straight fluid pipe fragment.§r Conducts fluids only in one direction. Does not connect to the sides. Sneak to place in reverse direction.
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
tile.engineersdecor.sign_decor.name=Sign plate (Engineer's decor logo)
|
||||
#tile.engineersdecor.sign_decor.help=§6This should not be craftable or visible in JEI. Used for creative tab and screenshots.
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
# EOF
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -2,53 +2,53 @@
|
|||
"parent": "block/cube",
|
||||
"textures": {
|
||||
"end": "engineersdecor:blocks/hsupport/steel_double_t_support_end_texture",
|
||||
"particle": "engineersdecor:blocks/hsupport/steel_double_t_support_end_texture",
|
||||
"side": "engineersdecor:blocks/hsupport/steel_double_t_support_side_texture",
|
||||
"top": "engineersdecor:blocks/hsupport/steel_double_t_support_top_texture",
|
||||
"particle": "engineersdecor:blocks/hsupport/steel_double_t_support_end_texture"
|
||||
"top": "engineersdecor:blocks/hsupport/steel_double_t_support_top_texture"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [5, 15, 0],
|
||||
"to": [11, 16, 16],
|
||||
"faces": {
|
||||
"north": {"texture": "#end"},
|
||||
"east": {"texture": "#side"},
|
||||
"south": {"texture": "#end"},
|
||||
"west": {"texture": "#side"},
|
||||
"up": {"texture": "#top"},
|
||||
"down": {"texture": "#top"}
|
||||
"north": {"uv": [5, 0, 11, 1], "texture": "#end"},
|
||||
"east": {"uv": [0, 0, 16, 1], "texture": "#side"},
|
||||
"south": {"uv": [5, 0, 11, 1], "texture": "#end"},
|
||||
"west": {"uv": [0, 0, 16, 1], "texture": "#side"},
|
||||
"up": {"uv": [5, 0, 11, 16], "texture": "#top"},
|
||||
"down": {"uv": [5, 0, 11, 16], "texture": "#top"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [9, 12, 0],
|
||||
"to": [10, 15, 16],
|
||||
"faces": {
|
||||
"north": {"texture": "#end"},
|
||||
"east": {"texture": "#side"},
|
||||
"south": {"texture": "#end"},
|
||||
"west": {"texture": "#side"}
|
||||
"north": {"uv": [6, 1, 7, 4], "texture": "#end"},
|
||||
"east": {"uv": [0, 1, 16, 4], "texture": "#side"},
|
||||
"south": {"uv": [9, 1, 10, 4], "texture": "#end"},
|
||||
"west": {"uv": [0, 1, 16, 4], "texture": "#side"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [6, 12, 0],
|
||||
"to": [7, 15, 16],
|
||||
"faces": {
|
||||
"north": {"texture": "#end"},
|
||||
"east": {"texture": "#side"},
|
||||
"south": {"texture": "#end"},
|
||||
"west": {"texture": "#side"}
|
||||
"north": {"uv": [9, 1, 10, 4], "texture": "#end"},
|
||||
"east": {"uv": [0, 1, 16, 4], "texture": "#side"},
|
||||
"south": {"uv": [6, 1, 7, 4], "texture": "#end"},
|
||||
"west": {"uv": [0, 1, 16, 4], "texture": "#side"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [5, 11, 0],
|
||||
"to": [11, 12, 16],
|
||||
"faces": {
|
||||
"north": {"texture": "#end"},
|
||||
"east": {"texture": "#side"},
|
||||
"south": {"texture": "#end"},
|
||||
"west": {"texture": "#side"},
|
||||
"up": {"texture": "#top"},
|
||||
"down": {"texture": "#top"}
|
||||
"north": {"uv": [5, 4, 11, 5], "texture": "#end"},
|
||||
"east": {"uv": [0, 4, 16, 5], "texture": "#side"},
|
||||
"south": {"uv": [5, 4, 11, 5], "texture": "#end"},
|
||||
"west": {"uv": [0, 4, 16, 5], "texture": "#side"},
|
||||
"up": {"uv": [5, 0, 11, 16], "texture": "#top"},
|
||||
"down": {"uv": [5, 0, 11, 16], "texture": "#top"}
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -62,6 +62,16 @@
|
|||
},
|
||||
"fixed": {
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
},
|
||||
"firstperson_righthand": {
|
||||
"scale": [0.5, 0.5, 0.5],
|
||||
"rotation": [120, 30, 0],
|
||||
"translation": [2, 3, 0]
|
||||
},
|
||||
"thirdperson_righthand": {
|
||||
"scale": [0.5, 0.5, 0.5],
|
||||
"rotation": [120, 15, 0],
|
||||
"translation": [-1, -1, -2]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
{
|
||||
"parent": "block/cube",
|
||||
"textures": {
|
||||
"end": "engineersdecor:blocks/hsupport/steel_double_t_support_end_texture",
|
||||
"particle": "engineersdecor:blocks/hsupport/steel_double_t_support_end_texture",
|
||||
"side": "engineersdecor:blocks/hsupport/steel_double_t_support_side_texture",
|
||||
"top": "engineersdecor:blocks/hsupport/steel_double_t_support_top_texture"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [11, 15, 5],
|
||||
"to": [16, 16, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 5, 1], "texture": "#side"},
|
||||
"east": {"uv": [5, 0, 11, 1], "texture": "#end"},
|
||||
"south": {"uv": [11, 0, 16, 1], "texture": "#side"},
|
||||
"up": {"uv": [5, 10, 11, 16], "rotation": 270, "texture": "#top"},
|
||||
"down": {"uv": [11, 5, 16, 11], "rotation": 90, "texture": "#top"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [11, 11, 5],
|
||||
"to": [16, 12, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 4, 5, 5], "texture": "#side"},
|
||||
"east": {"uv": [5, 4, 11, 5], "texture": "#end"},
|
||||
"south": {"uv": [11, 4, 16, 5], "texture": "#side"},
|
||||
"up": {"uv": [11, 5, 16, 11], "rotation": 270, "texture": "#top"},
|
||||
"down": {"uv": [5, 10, 11, 16], "rotation": 90, "texture": "#top"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [10, 12, 9],
|
||||
"to": [16, 15, 10],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 1, 6, 4], "texture": "#side"},
|
||||
"east": {"uv": [6, 1, 7, 4], "texture": "#end"},
|
||||
"south": {"uv": [10, 1, 16, 4], "texture": "#side"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [10, 12, 6],
|
||||
"to": [16, 15, 7],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 1, 6, 4], "texture": "#side"},
|
||||
"east": {"uv": [9, 1, 10, 4], "texture": "#end"},
|
||||
"south": {"uv": [10, 1, 16, 4], "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]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
{
|
||||
"parent": "block/cube",
|
||||
"textures": {
|
||||
"pside": "engineersdecor:blocks/pole/thick_steel_pole_side_texture",
|
||||
"particle": "engineersdecor:blocks/pole/thick_steel_pole_side_texture",
|
||||
"ptop": "engineersdecor:blocks/pole/thick_steel_pole_top_texture"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [6, 0, 10],
|
||||
"to": [10, 11, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [6, 5, 10, 16], "texture": "#pside"},
|
||||
"south": {"uv": [6, 5, 10, 16], "texture": "#pside"},
|
||||
"down": {"uv": [6, 5, 10, 6], "texture": "#ptop"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [10, 0, 5],
|
||||
"to": [11, 11, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [5, 5, 6, 16], "texture": "#pside"},
|
||||
"east": {"uv": [5, 5, 11, 16], "texture": "#pside"},
|
||||
"south": {"uv": [10, 5, 11, 16], "texture": "#pside"},
|
||||
"west": {"uv": [5, 5, 11, 16], "texture": "#pside"},
|
||||
"down": {"uv": [10, 5, 11, 11], "texture": "#ptop"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [5, 0, 5],
|
||||
"to": [6, 11, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [10, 5, 11, 16], "texture": "#pside"},
|
||||
"east": {"uv": [5, 5, 11, 16], "texture": "#pside"},
|
||||
"south": {"uv": [5, 5, 6, 16], "texture": "#pside"},
|
||||
"west": {"uv": [5, 5, 11, 16], "texture": "#pside"},
|
||||
"down": {"uv": [5, 5, 6, 11], "texture": "#ptop"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [6, 0, 5],
|
||||
"to": [10, 11, 6],
|
||||
"faces": {
|
||||
"north": {"uv": [6, 5, 10, 16], "texture": "#pside"},
|
||||
"south": {"uv": [6, 5, 10, 16], "texture": "#pside"},
|
||||
"down": {"uv": [6, 10, 10, 11], "texture": "#ptop"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"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]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
{
|
||||
"parent": "block/cube",
|
||||
"textures": {
|
||||
"pside": "engineersdecor:blocks/pole/thin_steel_pole_side_texture",
|
||||
"particle": "engineersdecor:blocks/pole/thin_steel_pole_side_texture",
|
||||
"ptop": "engineersdecor:blocks/pole/thin_steel_pole_top_texture"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [7, 0, 9],
|
||||
"to": [9, 11, 10],
|
||||
"faces": {
|
||||
"north": {"uv": [7, 5, 9, 16], "texture": "#pside"},
|
||||
"south": {"uv": [7, 5, 9, 16], "texture": "#pside"},
|
||||
"down": {"uv": [7, 6, 9, 7], "texture": "#ptop"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [9, 0, 6],
|
||||
"to": [10, 11, 10],
|
||||
"faces": {
|
||||
"north": {"uv": [6, 5, 7, 16], "texture": "#pside"},
|
||||
"east": {"uv": [6, 5, 10, 16], "texture": "#pside"},
|
||||
"south": {"uv": [9, 5, 10, 16], "texture": "#pside"},
|
||||
"west": {"uv": [6, 5, 10, 16], "texture": "#pside"},
|
||||
"down": {"uv": [9, 6, 10, 10], "texture": "#ptop"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [6, 0, 6],
|
||||
"to": [7, 11, 10],
|
||||
"faces": {
|
||||
"north": {"uv": [9, 5, 10, 16], "texture": "#pside"},
|
||||
"east": {"uv": [6, 5, 10, 16], "texture": "#pside"},
|
||||
"south": {"uv": [6, 5, 7, 16], "texture": "#pside"},
|
||||
"west": {"uv": [6, 5, 10, 16], "texture": "#pside"},
|
||||
"down": {"uv": [6, 6, 7, 10], "texture": "#ptop"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [7, 0, 6],
|
||||
"to": [9, 11, 7],
|
||||
"faces": {
|
||||
"north": {"uv": [7, 5, 9, 16], "texture": "#pside"},
|
||||
"south": {"uv": [7, 5, 9, 16], "texture": "#pside"},
|
||||
"down": {"uv": [7, 9, 9, 10], "texture": "#ptop"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"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]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,87 @@
|
|||
{
|
||||
"textures": {
|
||||
"end": "engineersdecor:blocks/pipe/straight_pipe_valve_end_texture",
|
||||
"particle": "engineersdecor:blocks/pipe/straight_pipe_valve_end_texture",
|
||||
"side": "engineersdecor:blocks/pipe/straight_pipe_valve_side_texture"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [2, 2, 0],
|
||||
"to": [14, 14, 2],
|
||||
"faces": {
|
||||
"north": {"uv": [2, 2, 14, 14], "texture": "#end"},
|
||||
"east": {"uv": [2, 0, 14, 2], "rotation": 90, "texture": "#side"},
|
||||
"south": {"uv": [2, 2, 14, 14], "texture": "#end"},
|
||||
"west": {"uv": [2, 0, 14, 2], "rotation": 270, "texture": "#side"},
|
||||
"up": {"uv": [2, 0, 14, 2], "texture": "#side"},
|
||||
"down": {"uv": [2, 14, 14, 16], "texture": "#side"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2, 2, 14],
|
||||
"to": [14, 14, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [2, 2, 14, 14], "texture": "#end"},
|
||||
"east": {"uv": [2, 14, 14, 16], "rotation": 90, "texture": "#side"},
|
||||
"south": {"uv": [2, 2, 14, 14], "texture": "#end"},
|
||||
"west": {"uv": [2, 0, 14, 2], "rotation": 90, "texture": "#side"},
|
||||
"up": {"uv": [2, 14, 14, 16], "texture": "#side"},
|
||||
"down": {"uv": [2, 0, 14, 2], "texture": "#side"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 4, 11],
|
||||
"to": [12, 12, 14],
|
||||
"faces": {
|
||||
"east": {"uv": [4, 11, 12, 14], "rotation": 90, "texture": "#side"},
|
||||
"west": {"uv": [4, 11, 12, 14], "rotation": 270, "texture": "#side"},
|
||||
"up": {"uv": [4, 11, 12, 14], "texture": "#side"},
|
||||
"down": {"uv": [4, 11, 12, 14], "rotation": 180, "texture": "#side"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 4, 2],
|
||||
"to": [12, 12, 5],
|
||||
"faces": {
|
||||
"east": {"uv": [4, 11, 12, 14], "rotation": 90, "texture": "#side"},
|
||||
"west": {"uv": [4, 11, 12, 14], "rotation": 270, "texture": "#side"},
|
||||
"up": {"uv": [4, 2, 12, 5], "texture": "#side"},
|
||||
"down": {"uv": [4, 2, 12, 5], "rotation": 180, "texture": "#side"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [3, 3, 5],
|
||||
"to": [13, 13, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [4, 4, 12, 12], "texture": "#end"},
|
||||
"east": {"uv": [3, 5, 13, 11], "rotation": 90, "texture": "#side"},
|
||||
"south": {"uv": [4, 4, 12, 12], "texture": "#end"},
|
||||
"west": {"uv": [3, 5, 13, 11], "rotation": 270, "texture": "#side"},
|
||||
"up": {"uv": [3, 5, 13, 11], "texture": "#side"},
|
||||
"down": {"uv": [3, 5, 13, 11], "rotation": 180, "texture": "#side"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [120, 15, 0],
|
||||
"translation": [-1, -1, -2],
|
||||
"scale": [0.4, 0.4, 0.4]
|
||||
},
|
||||
"firstperson_righthand": {
|
||||
"rotation": [120, 30, 0],
|
||||
"translation": [2, 3, 0],
|
||||
"scale": [0.4, 0.4, 0.4]
|
||||
},
|
||||
"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]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -162,6 +162,13 @@
|
|||
"ingredient": { "item": "immersiveengineering:wooden_device0", "data": 0 },
|
||||
"name": "crateTreatedWood"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{ "type": "minecraft:item_exists", "item": "immersiveengineering:metal_device1" }
|
||||
],
|
||||
"ingredient": { "item": "immersiveengineering:metal_device1", "data": 6 },
|
||||
"name": "itemFluidPipe"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{ "type": "engineersdecor:grc", "missing": ["immersiveengineering:stone_decoration"] }
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:grc",
|
||||
"result": "engineersdecor:straight_pipe_valve",
|
||||
"required": ["immersiveengineering:material"]
|
||||
}
|
||||
],
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"PPP"
|
||||
],
|
||||
"key": {
|
||||
"P": {
|
||||
"item": "#itemFluidPipe"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:straight_pipe_valve",
|
||||
"count": 3
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 527 B After Width: | Height: | Size: 350 B |
Before Width: | Height: | Size: 527 B After Width: | Height: | Size: 270 B |
Before Width: | Height: | Size: 527 B After Width: | Height: | Size: 376 B |
After Width: | Height: | Size: 456 B |
After Width: | Height: | Size: 544 B |
|
@ -23,6 +23,9 @@ IE components used in this mod:
|
|||
"engineersdecor:blocks/iestyle/stone_decoration_concrete_by_blusunrize",
|
||||
used in block "engineersdecor:concrete_wall".
|
||||
|
||||
- immersiveengineering:textures/block/metal_device1_fluid_pipe.png (for
|
||||
valves).
|
||||
|
||||
Source codes derived (inspected e.g. for trouble shooting and learning how things work):
|
||||
|
||||
- Ore dict based recipe registration from blusunrize.immersiveengineering.common.IERecipes.
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
|
||||
"1.12.2": {
|
||||
"1.0.4-b5": "[A] Horizontal steel double-T support beam with pole connections.\n[A] Added fluid pipe check valve (straight, conducts only one way).\n[M] Internal registration block/te handling changed.",
|
||||
"1.0.4-b4": "[F] Clinker/slag brick wall side cullfacing disabled to prevent texture leaks when connecting to concrete walls.\n[F] Unused treated wood pole texture regions filled (optifine).\n[F] Using mipped cutout format for window multi-layer model (issue #19, thanks rixmswey for reporting and details).\n[M] Recipe tuning, added standalone recipe for all mod blocks.\n[M] In-game CTRL-SHIFT tooltip documentation updated.\n[M] Panzer glass block: Ambient occlusion and light opacity tuned.\n[M] Stairs: Light opacity tuned.\n[A] Tooltip documentation added for mod stairs.\n[E] Horizontal steel double-T support beam (config:experimental).",
|
||||
"1.0.4-b3": "[A] Added thin (4x4x16) and thick (6x6x16) steel hollow poles.\n[A] Added support head/foot components for thin and thick steel poles.",
|
||||
"1.0.4-b2": "[A] Added position dependent texture variation to clinker wall, slag brick wall and rebar concrete wall.",
|
||||
|
@ -37,7 +38,7 @@
|
|||
},
|
||||
"promos": {
|
||||
"1.12.2-recommended": "1.0.3",
|
||||
"1.12.2-latest": "1.0.4-b4",
|
||||
"1.12.2-latest": "1.0.4-b5",
|
||||
"1.13.2-recommended": "",
|
||||
"1.13.2-latest": "1.0.4-b3"
|
||||
}
|
||||
|
|
13
readme.md
|
@ -79,10 +79,23 @@ The mod has its focus decorative blocks. Current feature set:
|
|||
Can be used e.g. for structural support or wire relay post, where the height
|
||||
of the IE wire posts does not match.
|
||||
|
||||
- *Thin and thick steel support poles*: Hollow steel pole fragments, can be
|
||||
placed in all directions. Also with head/food end components. Thin poles crafted
|
||||
3x3 from three steel ingots (output 12), thick poles crafted 3x3 from six thin
|
||||
steel poles.
|
||||
|
||||
- Double-T steel support: Horizontal top-aligned support beam, placed in the
|
||||
direction you look. Auto connects to adjacent beams if facing towards them. Auto
|
||||
connects to steel poles underneath. Crafted 3x3 from thin steel poles in a T-shape
|
||||
(output: 6 beams).
|
||||
|
||||
- *Inset spot light*: Small metal framed glowstone based light source for ceiling,
|
||||
wall, or floor. Light level like a torch. Thin, hence not blocking the way.
|
||||
Allows illuminating places where electrical light installations are problematic.
|
||||
|
||||
- *Fluid pipe check valve*: IE fluid pipe styled straight valve that conducts fluids
|
||||
only in one direction. Crafted from 3x3 from three fluid pipes.
|
||||
|
||||
More to come slowly but steadily.
|
||||
|
||||
----
|
||||
|
|