diff --git a/1.12/gradle.properties b/1.12/gradle.properties index 46f3a09..8ba36fd 100644 --- a/1.12/gradle.properties +++ b/1.12/gradle.properties @@ -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 diff --git a/1.12/meta/update.json b/1.12/meta/update.json index d209192..603bed6 100644 --- a/1.12/meta/update.json +++ b/1.12/meta/update.json @@ -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" } } \ No newline at end of file diff --git a/1.12/readme.md b/1.12/readme.md index 3c7cc14..c1a5ffa 100644 --- a/1.12/readme.md +++ b/1.12/readme.md @@ -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). diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorHorizontalSupport.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorHorizontalSupport.java index 7d96ba5..043cac0 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorHorizontalSupport.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorHorizontalSupport.java @@ -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 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(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); } } diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorPipeValve.java b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorPipeValve.java new file mode 100644 index 0000000..956c64e --- /dev/null +++ b/1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorPipeValve.java @@ -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 getCapability(@Nonnull Capability 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; } + } + } +} diff --git a/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java b/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java index 1284018..b188d75 100644 --- a/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java +++ b/1.12/src/main/java/wile/engineersdecor/blocks/ModBlocks.java @@ -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 clazz; + public final ResourceLocation key; + public TileEntityRegistrationData(Class 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 registeredBlocks = new ArrayList<>(); + private static ArrayList registeredTileEntityInits = new ArrayList<>(); @Nonnull public static List getRegisteredBlocks() @@ -226,28 +268,33 @@ public class ModBlocks public static final void registerBlocks(RegistryEvent.Register event) { // Config based registry selection - int num_registrations_skipped = 0; - ArrayList 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() diff --git a/1.12/src/main/java/wile/engineersdecor/detail/ModAuxiliaries.java b/1.12/src/main/java/wile/engineersdecor/detail/ModAuxiliaries.java index 9728bd2..f79041e 100644 --- a/1.12/src/main/java/wile/engineersdecor/detail/ModAuxiliaries.java +++ b/1.12/src/main/java/wile/engineersdecor/detail/ModAuxiliaries.java @@ -144,4 +144,6 @@ public class ModAuxiliaries } return bb; } + + public interface IExperimentalFeature{} } diff --git a/1.12/src/main/java/wile/engineersdecor/detail/ModConfig.java b/1.12/src/main/java/wile/engineersdecor/detail/ModConfig.java index 6a9e106..30bfffa 100644 --- a/1.12/src/main/java/wile/engineersdecor/detail/ModConfig.java +++ b/1.12/src/main/java/wile/engineersdecor/detail/ModConfig.java @@ -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; diff --git a/1.12/src/main/resources/assets/engineersdecor/blockstates/steel_double_t_support.json b/1.12/src/main/resources/assets/engineersdecor/blockstates/steel_double_t_support.json index 898457d..f6ecc79 100644 --- a/1.12/src/main/resources/assets/engineersdecor/blockstates/steel_double_t_support.json +++ b/1.12/src/main/resources/assets/engineersdecor/blockstates/steel_double_t_support.json @@ -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"}} } + } } } diff --git a/1.12/src/main/resources/assets/engineersdecor/blockstates/straight_pipe_valve.json b/1.12/src/main/resources/assets/engineersdecor/blockstates/straight_pipe_valve.json new file mode 100644 index 0000000..d3feed0 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/blockstates/straight_pipe_valve.json @@ -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} } + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/lang/en_us.lang b/1.12/src/main/resources/assets/engineersdecor/lang/en_us.lang index ec57b44..72ce51d 100644 --- a/1.12/src/main/resources/assets/engineersdecor/lang/en_us.lang +++ b/1.12/src/main/resources/assets/engineersdecor/lang/en_us.lang @@ -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 #----------------------------------------------------------------------------------------------------------- diff --git a/1.12/src/main/resources/assets/engineersdecor/lang/ru_ru.lang b/1.12/src/main/resources/assets/engineersdecor/lang/ru_ru.lang index 618c5a3..4c3bbeb 100644 --- a/1.12/src/main/resources/assets/engineersdecor/lang/ru_ru.lang +++ b/1.12/src/main/resources/assets/engineersdecor/lang/ru_ru.lang @@ -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 #----------------------------------------------------------------------------------------------------------- diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_model.json b/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_model.json index cee71a6..02308cb 100644 --- a/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_model.json +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_model.json @@ -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] + } } } \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_xconnect_model.json b/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_xconnect_model.json new file mode 100644 index 0000000..2aed74d --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_xconnect_model.json @@ -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] + } + } +} \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_xconnect_thick_pole_model.json b/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_xconnect_thick_pole_model.json new file mode 100644 index 0000000..668f4d3 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_xconnect_thick_pole_model.json @@ -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] + } + } +} \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_xconnect_thin_pole_model.json b/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_xconnect_thin_pole_model.json new file mode 100644 index 0000000..4c0bf1b --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_xconnect_thin_pole_model.json @@ -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] + } + } +} \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/models/block/pipe/straight_pipe_valve_model.json b/1.12/src/main/resources/assets/engineersdecor/models/block/pipe/straight_pipe_valve_model.json new file mode 100644 index 0000000..92e2061 --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/models/block/pipe/straight_pipe_valve_model.json @@ -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] + } + } +} \ No newline at end of file diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json b/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json index 634950b..cfa0394 100644 --- a/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/_constants.json @@ -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"] } diff --git a/1.12/src/main/resources/assets/engineersdecor/recipes/straight_pipe_valve_recipe.json b/1.12/src/main/resources/assets/engineersdecor/recipes/straight_pipe_valve_recipe.json new file mode 100644 index 0000000..8e7201f --- /dev/null +++ b/1.12/src/main/resources/assets/engineersdecor/recipes/straight_pipe_valve_recipe.json @@ -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 + } +} diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/hsupport/steel_double_t_support_end_texture.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/hsupport/steel_double_t_support_end_texture.png index 9584364..db9e940 100644 Binary files a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/hsupport/steel_double_t_support_end_texture.png and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/hsupport/steel_double_t_support_end_texture.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/hsupport/steel_double_t_support_side_texture.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/hsupport/steel_double_t_support_side_texture.png index 9584364..db55c56 100644 Binary files a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/hsupport/steel_double_t_support_side_texture.png and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/hsupport/steel_double_t_support_side_texture.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/hsupport/steel_double_t_support_top_texture.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/hsupport/steel_double_t_support_top_texture.png index 9584364..3d928b5 100644 Binary files a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/hsupport/steel_double_t_support_top_texture.png and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/hsupport/steel_double_t_support_top_texture.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/pipe/straight_pipe_valve_end_texture.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/pipe/straight_pipe_valve_end_texture.png new file mode 100644 index 0000000..45081f0 Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/pipe/straight_pipe_valve_end_texture.png differ diff --git a/1.12/src/main/resources/assets/engineersdecor/textures/blocks/pipe/straight_pipe_valve_side_texture.png b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/pipe/straight_pipe_valve_side_texture.png new file mode 100644 index 0000000..66db297 Binary files /dev/null and b/1.12/src/main/resources/assets/engineersdecor/textures/blocks/pipe/straight_pipe_valve_side_texture.png differ diff --git a/credits.md b/credits.md index 66cd4c3..69da9b2 100644 --- a/credits.md +++ b/credits.md @@ -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. diff --git a/meta/update.json b/meta/update.json index d833541..d8ac810 100644 --- a/meta/update.json +++ b/meta/update.json @@ -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" } diff --git a/readme.md b/readme.md index 4971ff0..6f09d5f 100644 --- a/readme.md +++ b/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. ----