From a6bdff4bde4b966fbf49f417ee50195e3f22e013 Mon Sep 17 00:00:00 2001 From: stfwi Date: Sat, 27 Apr 2019 20:43:50 +0200 Subject: [PATCH] Added check valve, double-T supports with auto-connections. Block/te registration adapted. --- 1.12/gradle.properties | 2 +- 1.12/meta/update.json | 3 +- 1.12/readme.md | 4 + .../blocks/BlockDecorHorizontalSupport.java | 58 ++++- .../blocks/BlockDecorPipeValve.java | 198 ++++++++++++++++++ .../wile/engineersdecor/blocks/ModBlocks.java | 91 ++++++-- .../engineersdecor/detail/ModAuxiliaries.java | 2 + .../wile/engineersdecor/detail/ModConfig.java | 1 + .../blockstates/steel_double_t_support.json | 13 +- .../blockstates/straight_pipe_valve.json | 9 + .../assets/engineersdecor/lang/en_us.lang | 7 +- .../assets/engineersdecor/lang/ru_ru.lang | 7 +- .../steel_double_t_support_model.json | 56 +++-- ...steel_double_t_support_xconnect_model.json | 63 ++++++ ...e_t_support_xconnect_thick_pole_model.json | 62 ++++++ ...le_t_support_xconnect_thin_pole_model.json | 62 ++++++ .../block/pipe/straight_pipe_valve_model.json | 87 ++++++++ .../engineersdecor/recipes/_constants.json | 7 + .../recipes/straight_pipe_valve_recipe.json | 22 ++ .../steel_double_t_support_end_texture.png | Bin 527 -> 350 bytes .../steel_double_t_support_side_texture.png | Bin 527 -> 270 bytes .../steel_double_t_support_top_texture.png | Bin 527 -> 376 bytes .../pipe/straight_pipe_valve_end_texture.png | Bin 0 -> 456 bytes .../pipe/straight_pipe_valve_side_texture.png | Bin 0 -> 544 bytes credits.md | 3 + meta/update.json | 3 +- readme.md | 13 ++ 27 files changed, 707 insertions(+), 66 deletions(-) create mode 100644 1.12/src/main/java/wile/engineersdecor/blocks/BlockDecorPipeValve.java create mode 100644 1.12/src/main/resources/assets/engineersdecor/blockstates/straight_pipe_valve.json create mode 100644 1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_xconnect_model.json create mode 100644 1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_xconnect_thick_pole_model.json create mode 100644 1.12/src/main/resources/assets/engineersdecor/models/block/hsupport/steel_double_t_support_xconnect_thin_pole_model.json create mode 100644 1.12/src/main/resources/assets/engineersdecor/models/block/pipe/straight_pipe_valve_model.json create mode 100644 1.12/src/main/resources/assets/engineersdecor/recipes/straight_pipe_valve_recipe.json create mode 100644 1.12/src/main/resources/assets/engineersdecor/textures/blocks/pipe/straight_pipe_valve_end_texture.png create mode 100644 1.12/src/main/resources/assets/engineersdecor/textures/blocks/pipe/straight_pipe_valve_side_texture.png 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 9584364c0f1de8429b45711d84ccc701c577dd9f..db9e94003284cccfc194617d098cc4b456f7c665 100644 GIT binary patch delta 296 zcmV+@0oVSI1l|IW83+ad001BJ|6!3KDu4b-L_t(I%XL#xvcxb50%LEs_dijU_wj~| z&2B$BDMTY;!q4X;0Eh@g1gZ+%jkOj?;=XTWCb}Dv9&wV85di?`ZulTcJ9w?N|0O-* zstN%BlHir(R^X~uB?+0i3y?&1HzEQg5fSKaWG1Q#06=oLW2F(XTiXhpU~CnxHh(`K z`tV?_^;Na1cJE$Yz#gPY8$)s*WZd1Ts_n~cB}szhmgkKrc}{BfPZBYcEdNY?>%Y7I zJ+MrZ)A`9?*Y&`=g61TACW)Bywt;>FCx2o|NY8h= ue&07FeepBVap4=~=Q&lJ{E63E_!R@uX?4SOeJq6l0000-_8SwRbrIg$~r8LF>004-BnGrFi zq^itpW{8+X1ORf*DJ5nmqA^C!834>IZixsHd+%mO*L9hhyEC(@B4VvoL=X`GRDU(5 zA!2-^Qi_PgX%zQ;BjUdADW!E?0btIVb0#8YrZEO0mQqwT49q!21HITwDmw$i QdjJ3c07*qoM6N<$f{|0#Hvj+t 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 9584364c0f1de8429b45711d84ccc701c577dd9f..db55c5615bee26adb4bced5e427c84f1272f5419 100644 GIT binary patch delta 215 zcmV;|04V>D1dalb83+ad001BJ|6!3KDu1p?L_t(I%k7Uj4#O}E1c!&=&X4l{KjY4a zNTw2l)JYiv0x3bW%awiKOGGd;G7}N$uBt=?RfVcjRhSuLjK2G}ZDb~@ikYFR09@CF zyAu(pD(+5Zl9^Ohcb~vij0o0sMMOT%gqCIDd7d^?pusthF}Ux$omCYPX*eRtOhf?u zI1bFLvzr+afrxOPXFJa==D)eMyF0UHj2Ww{`W-+-05G#R!9r delta 474 zcmV<00VV#90*?fc83+OZ005AYXf}}{Dt`xbNliru;{pi{B{-AiBuoGR0h~!hK~yNu zJ(63l!!QU$c^D_LQ*~9{|5932iQ@(v?g!HSLw>-_8SwRbrIg$~r8LF>004-BnGrFi zq^itpW{8+X1ORf*DJ5nmqA^C!834>IZixsHd+%mO*L9hhyEC(@B4VvoL=X`GRDU(5 zA!2-^Qi_PgX%zQ;BjUdADW!E?0btIVb0#8YrZEO0mQqwT49q!21HITwDmw$i QdjJ3c07*qoM6N<$g8d}c=Kufz 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 9584364c0f1de8429b45711d84ccc701c577dd9f..3d928b5e230ea70135a95f76ca386a96828982a5 100644 GIT binary patch delta 335 zcmV-V0kHm$1o#4w83+ad001BJ|6!3K9e=<801m(bYSxJf0003PNklSqD|cS_|NkL`o;u-G8i^ zSua%;X7-in&gb*l%;e1M>w%eVS=tK#SZiJGw9iaj2i?8vl~GbBxp&UpahbMV9g3u4 z)_vz(8O@A{pu6{~L=kb3uluU{^*}OZ;C$^o&)wR|?GiLqcNOlwTdKMz7ZKMvP4J9~} z4h%o*_YdZm=y zJ*70p0001pf|(I9rKGCNY-Wg)UunR6y0W~MO)B9>BAH4Mx- zMdUb+QcCYV)JB&%C&f5sj%Li9b7tmHxbJ(;xz-wQn3?9Bh=_=-H4zCQ*L4w506320 zx~>?js+4m^#AR7TWLcJY6ixzEn1B3-Mj`sX@80_uW8e2V=dvu@wyA1#{eHhWXLlze z3Y2D6YXyMTnyR+e0O0rgo#**@JZh~G?wpf|DB!3n5v}W*QhGk0B2r2rqR;1Z-?zKF zyO||so^wX*t+lX0M8|Q2=u%1uc6Sk>Ij6gy=gG|5wwc)&!^{F=&bhS~2~?PwsuDAY z@BcuE==b}%dx$i%_xoK+8DlVW8e_x?j4>kYm;eCo-dYQEkqiK&u%fEHcM&nOKoK8e d$D)WO`UAb#ODa19!+QV#002ovPDHLkV1nRL+b944 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 0000000000000000000000000000000000000000..45081f0fbbedc55092d6eda5ab102c885b9bc953 GIT binary patch literal 456 zcmV;(0XP1MP)VGd00C%8L_t(I%f*vDj^aQNg})hFwqzt+ zB10q{a02Hh;RFO6fZK2zp8-MY&XJ5nMq-Hu$(9=fGr=y+cz(3O1pA~4x=Pim_g>Y@ zcDsG!FSOQ_Wl2?40L*4HwASo)JK{LzbUHDg&(T^xT6pD``1J=b%jMEhD2jq4NnG)K zKL40|z%R?vJ(48ha5zxcHO3f>F#zOwj))LN5yRn-!C>(G!1w*mNOfJa-|tzk*H~)- z2*Z#xO;Jky;r;q#?tkWFjA6A}(Y7tO+YJC~Et|~-5&5ElzgR5zXrnR4HMec+YE9E% zjA1&Rc5L*sEaRhy|3a2!T@jn6>4=!;IYAI`xm;Y{^E|>ZL`3NK`;11T=N>do!y^Dh zgvn$=5CnLh=bFVGd00F>BL_t(I%Y~E6uG%mVhQBzDiMWMu z5mGmxiWM)=bsz9NSygq<255wYL_koPgxI-saf;iXQqI4zJ(~Gv<{yvu^77IEtX30yl=-$Q{j4@bisq31eC|E9+07!nJ)oRi2_nA(oD5dayAK&*WiUKJmMN!~+ z9^35}-}mofi2G$Wn_-M0NfM67BT`BRg8`$_2x~2u%Z1HmL(??O=W|EkD)pgxGYPI zF?`ft@$e9yVE*IFtFsWUnx`TLUPb!hGXP~-az39Cm3@B-LI@|6zU`d7EK2~=G$jav z{}YVIV|NaRL!u~h>Yq+0CX>l?4es!L-_5y^?K}fI}V2fi^bwMfwh*~?S@i{x~|#p_Y_4zp63W5 i+&*ZnQA)X=3GfpD1