Added redstone controlled fluid valves. Check valve recipe adapted.
This commit is contained in:
parent
a6bdff4bde
commit
ff03a1b70d
22 changed files with 317 additions and 27 deletions
|
@ -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-b5
|
||||
version_engineersdecor=1.0.4-b6
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
|
||||
"1.12.2": {
|
||||
"1.0.4-b6": "[A] Added redstone controlled fluid valve.\n[A] Added redstone controlled analog fluid valve.\n[M] Check valve recipe adapted (thanks majijn).",
|
||||
"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.",
|
||||
|
@ -29,6 +30,6 @@
|
|||
},
|
||||
"promos": {
|
||||
"1.12.2-recommended": "1.0.3",
|
||||
"1.12.2-latest": "1.0.4-b5"
|
||||
"1.12.2-latest": "1.0.4-b6"
|
||||
}
|
||||
}
|
|
@ -10,6 +10,10 @@ Mod sources for Minecraft version 1.12.2.
|
|||
----
|
||||
## Revision history
|
||||
|
||||
- v1.0.4-b6 [A] Added redstone controlled fluid valve.
|
||||
[A] Added redstone controlled analog fluid valve.
|
||||
[M] Check valve recipe adapted (thanks majijn).
|
||||
|
||||
- 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.
|
||||
|
|
|
@ -51,7 +51,9 @@ public class BlockDecor extends Block
|
|||
public static final long CFG_TRANSLUCENT = 0x0000000000000040L; // indicates a block/pane is glass like (transparent, etc)
|
||||
public static final long CFG_LIGHT_VALUE_MASK = 0x0000000000000f00L; // fixed value for getLightValue()
|
||||
public static final long CFG_LIGHT_VALUE_SHIFT = 8L;
|
||||
public static final long CFG_LAB_FURNACE_CRUDE = 0x0000000000010000L; // For DecorFurnace, denotes that it is a crude furnace.
|
||||
public static final long CFG_ELECTRICAL = 0x0000000000010000L; // Denotes if a component is mainly flux driven.
|
||||
public static final long CFG_REDSTONE_CONTROLLED = 0x0000000000020000L; // Denotes if a component has somehow a redstone control input
|
||||
public static final long CFG_ANALOG = 0x0000000000040000L; // Denotes if a component has analog behaviour
|
||||
|
||||
protected final AxisAlignedBB aabb;
|
||||
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
*/
|
||||
package wile.engineersdecor.blocks;
|
||||
|
||||
import net.minecraft.block.properties.PropertyInteger;
|
||||
import net.minecraft.block.state.BlockStateContainer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.SoundType;
|
||||
|
@ -16,6 +18,8 @@ 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.util.math.MathHelper;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
|
@ -26,6 +30,7 @@ import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
|||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidTankProperties;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import wile.engineersdecor.ModEngineersDecor;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
@ -33,18 +38,59 @@ import javax.annotation.Nullable;
|
|||
|
||||
public class BlockDecorPipeValve extends BlockDecorDirected
|
||||
{
|
||||
public static final PropertyInteger RS_CONNECTION_DIR = PropertyInteger.create("rsdir", 0,4);
|
||||
|
||||
public static void on_config(int container_size_decl, int redstone_slope)
|
||||
{
|
||||
BTileEntity.fluid_capacity_mb = MathHelper.clamp(container_size_decl, 1, 10000);
|
||||
BTileEntity.redstone_flow_slope_mb = MathHelper.clamp(redstone_slope, 1, 10000);
|
||||
ModEngineersDecor.logger.info("Config pipe valve: maxflow:" + BTileEntity.fluid_capacity_mb + "mb, redstone amp:" + BTileEntity.redstone_flow_slope_mb + "mb/sig");
|
||||
}
|
||||
|
||||
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
|
||||
protected BlockStateContainer createBlockState()
|
||||
{ return new BlockStateContainer(this, FACING, RS_CONNECTION_DIR); }
|
||||
|
||||
@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());
|
||||
if(!placer.isSneaking()) state = state.withProperty(FACING, state.getValue(FACING).getOpposite()).withProperty(RS_CONNECTION_DIR, 0);
|
||||
return state;
|
||||
}
|
||||
|
||||
// world to model index transformations. [Facing block][Facing neighbour] -> int 0=nothing, 1=top, 2=right, 3=down, 4=left.
|
||||
private static final int rsconnectors[][] = {
|
||||
//D U N S W E
|
||||
{0, 0, 1, 3, 4, 2}, // D
|
||||
{0, 0, 3, 1, 4, 2}, // U
|
||||
{3, 1, 0, 0, 4, 2}, // N
|
||||
{3, 1, 0, 0, 2, 4}, // S
|
||||
{3, 1, 2, 4, 0, 0}, // W
|
||||
{3, 1, 4, 2, 0, 0}, // E
|
||||
};
|
||||
|
||||
@Override
|
||||
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos)
|
||||
{
|
||||
if((config & (CFG_REDSTONE_CONTROLLED))==0) return state;
|
||||
EnumFacing.Axis bfa = state.getValue(FACING).getAxis();
|
||||
int bfi = state.getValue(FACING).getIndex();
|
||||
for(EnumFacing f:EnumFacing.VALUES) {
|
||||
if(f.getAxis() == bfa) continue;
|
||||
BlockPos nbp = pos.offset(f);
|
||||
IBlockState nbs = world.getBlockState(nbp);
|
||||
if(nbs.canProvidePower() && (nbs.getBlock().canConnectRedstone(nbs, world, nbp, f))) {
|
||||
return state.withProperty(RS_CONNECTION_DIR, rsconnectors[state.getValue(FACING).getIndex()][f.getIndex()]);
|
||||
}
|
||||
}
|
||||
return state.withProperty(RS_CONNECTION_DIR, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos fromPos)
|
||||
|
@ -60,6 +106,9 @@ public class BlockDecorPipeValve extends BlockDecorDirected
|
|||
world.notifyNeighborsOfStateChange(pos, this, true);
|
||||
}
|
||||
|
||||
public boolean canConnectRedstone(IBlockState state, IBlockAccess world, BlockPos pos, @Nullable EnumFacing side)
|
||||
{ return (side!=null) && (side!=state.getValue(FACING)) && (side!=state.getValue(FACING).getOpposite()); }
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity(IBlockState state)
|
||||
{ return true; }
|
||||
|
@ -71,7 +120,7 @@ public class BlockDecorPipeValve extends BlockDecorDirected
|
|||
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));
|
||||
if(te instanceof BlockDecorPipeValve.BTileEntity) ((BlockDecorPipeValve.BTileEntity)te).block_reconfigure(state.getValue(FACING), config);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -80,17 +129,34 @@ public class BlockDecorPipeValve extends BlockDecorDirected
|
|||
|
||||
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();
|
||||
protected static int fluid_capacity_mb = 1000; // likely also the max flow per tick
|
||||
protected static int redstone_flow_slope_mb = 1000/15;
|
||||
private final IFluidTankProperties[] fluid_props_ = {this};
|
||||
private EnumFacing block_facing_ = EnumFacing.NORTH;
|
||||
private boolean filling = false;
|
||||
private boolean filling_ = false;
|
||||
private boolean filling_enabled_ = true;
|
||||
private long block_config_ = 0;
|
||||
|
||||
public BTileEntity()
|
||||
{}
|
||||
|
||||
public void block_reconfigure(EnumFacing facing)
|
||||
{ block_facing_ = facing; }
|
||||
public void block_reconfigure(EnumFacing facing, long block_config)
|
||||
{
|
||||
block_facing_ = facing;
|
||||
block_config_ = block_config;
|
||||
filling_enabled_ = false;
|
||||
IFluidHandler fh = forward_fluid_handler();
|
||||
if(fh!=null) {
|
||||
if(fh.getTankProperties().length==0) {
|
||||
filling_enabled_ = true; // we don't know, so in doubt try filling.
|
||||
} else {
|
||||
for(IFluidTankProperties fp:fh.getTankProperties()) {
|
||||
if((fp!=null) && (fp.canFill())) { filling_enabled_ = true; break; }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TileEntity ------------------------------------------------------------------------------
|
||||
|
||||
|
@ -104,7 +170,7 @@ public class BlockDecorPipeValve extends BlockDecorDirected
|
|||
if(!hasWorld()) return;
|
||||
final IBlockState state = world.getBlockState(pos);
|
||||
if((!(state.getBlock() instanceof BlockDecorPipeValve))) return;
|
||||
block_reconfigure(state.getValue(FACING));
|
||||
block_reconfigure(state.getValue(FACING), block_config_);
|
||||
}
|
||||
|
||||
// ICapabilityProvider --------------------------------------------------------------------
|
||||
|
@ -124,17 +190,28 @@ public class BlockDecorPipeValve extends BlockDecorDirected
|
|||
|
||||
// IFluidHandler/IFluidTankProperties ---------------------------------------------------------------
|
||||
|
||||
@Nullable
|
||||
private IFluidHandler forward_fluid_handler()
|
||||
{
|
||||
final TileEntity te = world.getTileEntity(pos.offset(block_facing_));
|
||||
if(te == null) return null;
|
||||
return te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, block_facing_.getOpposite());
|
||||
}
|
||||
|
||||
@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((filling_) || (!filling_enabled_)) return 0;
|
||||
if((block_config_ & CFG_REDSTONE_CONTROLLED) != 0) {
|
||||
int rs = world.getRedstonePowerFromNeighbors(pos);
|
||||
if(rs <= 0) return 0;
|
||||
if(((block_config_ & CFG_ANALOG) != 0) && (rs < 15)) resource.amount = MathHelper.clamp(rs * redstone_flow_slope_mb, 1, resource.amount);
|
||||
}
|
||||
final IFluidHandler fh = forward_fluid_handler();
|
||||
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;
|
||||
filling_ = true; // in case someone does not check the cap, but just "forwards back" what is beeing filled right now.
|
||||
int n_filled = forward_fluid_handler().fill(resource, doFill);
|
||||
filling_ = false;
|
||||
return n_filled;
|
||||
}
|
||||
|
||||
|
@ -160,7 +237,7 @@ public class BlockDecorPipeValve extends BlockDecorDirected
|
|||
{ return null; }
|
||||
|
||||
public int getCapacity()
|
||||
{ return FLUID_CAPACITY_MB; }
|
||||
{ return fluid_capacity_mb; }
|
||||
|
||||
@Override
|
||||
public boolean canFill()
|
||||
|
|
|
@ -181,13 +181,27 @@ public class ModBlocks
|
|||
ModAuxiliaries.getPixeledAABB(5,11,0, 11,16,16)
|
||||
);
|
||||
|
||||
public static final BlockDecorPipeValve STRAIGHT_PIPE_VALVE = new BlockDecorPipeValve(
|
||||
public static final BlockDecorPipeValve STRAIGHT_CHECK_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)
|
||||
);
|
||||
|
||||
public static final BlockDecorPipeValve STRAIGHT_REDSTONE_VALVE = new BlockDecorPipeValve(
|
||||
"straight_pipe_valve_redstone",
|
||||
BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_REDSTONE_CONTROLLED,
|
||||
Material.IRON, 1.0f, 15f, SoundType.METAL,
|
||||
ModAuxiliaries.getPixeledAABB(4,4,0, 12,12,16)
|
||||
);
|
||||
|
||||
public static final BlockDecorPipeValve STRAIGHT_REDSTONE_ANALOG_VALVE = new BlockDecorPipeValve(
|
||||
"straight_pipe_valve_redstone_analog",
|
||||
BlockDecor.CFG_FACING_PLACEMENT|BlockDecor.CFG_REDSTONE_CONTROLLED|BlockDecor.CFG_ANALOG,
|
||||
Material.IRON, 1.0f, 15f, SoundType.METAL,
|
||||
ModAuxiliaries.getPixeledAABB(4,4,0, 12,12,16)
|
||||
);
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
//-- Tile entities
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -247,11 +261,10 @@ public class ModBlocks
|
|||
THIN_STEEL_POLE_HEAD,
|
||||
THICK_STEEL_POLE_HEAD,
|
||||
STEEL_DOUBLE_T_SUPPORT,
|
||||
STRAIGHT_PIPE_VALVE, STRAIGHT_PIPE_VALVE_TEI
|
||||
STRAIGHT_CHECK_VALVE, STRAIGHT_REDSTONE_VALVE, STRAIGHT_REDSTONE_ANALOG_VALVE, STRAIGHT_PIPE_VALVE_TEI
|
||||
};
|
||||
|
||||
private static final Object dev_content[] = {
|
||||
};
|
||||
private static final Object dev_content[] = {};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------
|
||||
//-- Init
|
||||
|
|
|
@ -201,6 +201,26 @@ public class ModConfig
|
|||
})
|
||||
@Config.Name("Crafting table: Move buttons")
|
||||
public boolean with_crafting_quickmove_buttons = false;
|
||||
|
||||
@Config.Comment({
|
||||
"Defines how many millibuckets can be transferred (per tick) through the valves. " +
|
||||
"That is technically the 'storage size' specified for blocks that want to fill " +
|
||||
"fluids into the valve (the valve has no container and forward that to the output " +
|
||||
"block), The value can be changed on-the-fly for tuning. "
|
||||
})
|
||||
@Config.Name("Valves: Max flow rate")
|
||||
@Config.RangeInt(min=1, max=10000)
|
||||
public int pipevalve_max_flowrate = 1000;
|
||||
|
||||
@Config.Comment({
|
||||
"Defines how many millibuckets per redstone signal strength can be transferred per tick " +
|
||||
"through the analog redstone controlled valves. Note: power 0 is always off, power 15 is always " +
|
||||
"the max flow rate. Between power 1 and 14 this scaler will result in a flow = 'redstone slope' * 'current redstone power'. " +
|
||||
"The value can be changed on-the-fly for tuning. "
|
||||
})
|
||||
@Config.Name("Valves: Redstone slope")
|
||||
@Config.RangeInt(min=1, max=10000)
|
||||
public int pipevalve_redstone_slope = 20;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
|
@ -268,6 +288,7 @@ public class ModConfig
|
|||
BlockDecorChair.on_config(optout.without_chair_sitting, optout.without_mob_chair_sitting, tweaks.chair_mob_sitting_probability_percent, tweaks.chair_mob_standup_probability_percent);
|
||||
BlockDecorLadder.on_config(optout.without_ladder_speed_boost);
|
||||
BlockDecorCraftingTable.on_config(optout.without_crafting_table_history, false, tweaks.with_crafting_quickmove_buttons);
|
||||
BlockDecorPipeValve.on_config(tweaks.pipevalve_max_flowrate, tweaks.pipevalve_redstone_slope);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
"variants": {
|
||||
"normal": [{}],
|
||||
"inventory": [{}],
|
||||
"facing": { "north":{"y":0}, "south":{"y":180}, "west":{"y":270}, "east":{"y":90}, "up": {"x":-90}, "down": {"x":90} }
|
||||
"facing": { "north":{"y":0}, "south":{"y":180}, "west":{"y":270}, "east":{"y":90}, "up": {"x":-90}, "down": {"x":90} },
|
||||
"rsdir": { "0":{},"1":{},"2":{},"3":{},"4":{} }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "engineersdecor:pipe/straight_pipe_valve_model",
|
||||
"textures": { "side" : "engineersdecor:blocks/pipe/straight_pipe_valve_side_redstone_texture" }
|
||||
},
|
||||
"variants": {
|
||||
"normal": [{}],
|
||||
"inventory": [{}],
|
||||
"facing": { "north":{"y":0}, "south":{"y":180}, "west":{"y":270}, "east":{"y":90}, "up": {"x":-90}, "down": {"x":90} },
|
||||
"rsdir": {
|
||||
"0":{},
|
||||
"1":{ "submodel": {"rsdiru": { "model": "engineersdecor:pipe/straight_pipe_valve_rs_connector_submodel", "x": -90 }} },
|
||||
"2":{ "submodel": {"rsdirr": { "model": "engineersdecor:pipe/straight_pipe_valve_rs_connector_submodel", "y": 90 }} },
|
||||
"3":{ "submodel": {"rsdird": { "model": "engineersdecor:pipe/straight_pipe_valve_rs_connector_submodel", "x": 90 }} },
|
||||
"4":{ "submodel": {"rsdirl": { "model": "engineersdecor:pipe/straight_pipe_valve_rs_connector_submodel", "y": -90 }} }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "engineersdecor:pipe/straight_pipe_valve_model",
|
||||
"textures": { "side" : "engineersdecor:blocks/pipe/straight_pipe_valve_side_redstone_analog_texture" }
|
||||
},
|
||||
"variants": {
|
||||
"normal": [{}],
|
||||
"inventory": [{}],
|
||||
"facing": { "north":{"y":0}, "south":{"y":180}, "west":{"y":270}, "east":{"y":90}, "up": {"x":-90}, "down": {"x":90} },
|
||||
"rsdir": {
|
||||
"0":{},
|
||||
"1":{ "submodel": {"rsdiru": { "model": "engineersdecor:pipe/straight_pipe_valve_rs_connector_submodel", "x": -90 }} },
|
||||
"2":{ "submodel": {"rsdirr": { "model": "engineersdecor:pipe/straight_pipe_valve_rs_connector_submodel", "y": 90 }} },
|
||||
"3":{ "submodel": {"rsdird": { "model": "engineersdecor:pipe/straight_pipe_valve_rs_connector_submodel", "x": 90 }} },
|
||||
"4":{ "submodel": {"rsdirl": { "model": "engineersdecor:pipe/straight_pipe_valve_rs_connector_submodel", "y": -90 }} }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -95,7 +95,17 @@ tile.engineersdecor.small_lab_furnace.help=§6Small metal cased lab kiln.§r Sol
|
|||
smelting speed boost.
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
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.straight_pipe_valve.help=§6Straight fluid pipe fragment.§r Conducts fluids only in one direction. \
|
||||
Does not connect to the sides. Reduces flow rate. Sneak to place in reverse direction.
|
||||
tile.engineersdecor.straight_pipe_valve_redstone.name=Redstone controlled fluid valve
|
||||
tile.engineersdecor.straight_pipe_valve_redstone.help=§6Straight fluid pipe fragment.§r Conducts fluids only in one direction. \
|
||||
Does not connect to the sides. Sneak to place in reverse direction. \
|
||||
Blocks if not redstone powered.
|
||||
tile.engineersdecor.straight_pipe_valve_redstone_analog.name=Redstone analog fluid valve
|
||||
tile.engineersdecor.straight_pipe_valve_redstone_analog.help=§6Straight fluid pipe fragment.§r Conducts fluids only in one direction. \
|
||||
Does not connect to the sides. Sneak to place in reverse direction. \
|
||||
Blocks if not redstone powered, reduces the flow rate linear from power 1 to 14, \
|
||||
opens to maximum possible valve flow rate for power 15.
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
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.
|
||||
|
|
|
@ -88,7 +88,17 @@ tile.engineersdecor.small_lab_furnace.name=Компактная лаборато
|
|||
tile.engineersdecor.small_lab_furnace.help=§6Лабораторная печь в металлическом корпусе.§r Подача твёрдого топлива - сверху. Немного горячее чем каменная, поэтому быстрее. Два внутренних слота для ввода, выхода и топлива.
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
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.straight_pipe_valve.help=§6Straight fluid pipe fragment.§r Conducts fluids only in one direction. \
|
||||
Does not connect to the sides. Reduces flow rate. Sneak to place in reverse direction.
|
||||
tile.engineersdecor.straight_pipe_valve_redstone.name=Redstone controlled fluid valve
|
||||
#tile.engineersdecor.straight_pipe_valve_redstone.help=§6Straight fluid pipe fragment.§r Conducts fluids only in one direction. \
|
||||
Does not connect to the sides. Sneak to place in reverse direction. \
|
||||
Blocks if not redstone powered.
|
||||
tile.engineersdecor.straight_pipe_valve_redstone_analog.name=Redstone analog fluid valve
|
||||
#tile.engineersdecor.straight_pipe_valve_redstone_analog.help=§6Straight fluid pipe fragment.§r Conducts fluids only in one direction. \
|
||||
Does not connect to the sides. Sneak to place in reverse direction. \
|
||||
Blocks if not redstone powered, reduces the flow rate linear from power 1 to 14, \
|
||||
opens to maximum possible valve flow rate for power 15.
|
||||
#-----------------------------------------------------------------------------------------------------------
|
||||
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.
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"textures": {
|
||||
"rsside": "engineersdecor:blocks/pipe/straight_pipe_valve_side_redstone_texture",
|
||||
"particle": "engineersdecor:blocks/pipe/straight_pipe_valve_side_redstone_texture",
|
||||
"rsend": "engineersdecor:blocks/pipe/straight_pipe_valve_side_redstone_cn_texture"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [5, 5, 0],
|
||||
"to": [11, 11, 3],
|
||||
"faces": {
|
||||
"north": {"uv": [5, 5, 11, 11], "rotation": 90, "texture": "#rsend"},
|
||||
"east": {"uv": [13, 5, 16, 11], "texture": "#rsside"},
|
||||
"west": {"uv": [13, 5, 16, 11], "rotation": 180, "texture": "#rsside"},
|
||||
"up": {"uv": [13, 5, 16, 11], "rotation": 270, "texture": "#rsside"},
|
||||
"down": {"uv": [13, 5, 16, 11], "rotation": 90, "texture": "#rsside"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"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]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -106,6 +106,20 @@
|
|||
],
|
||||
"name": "plateAnyMetal"
|
||||
},
|
||||
{
|
||||
"ingredient": [
|
||||
{ "item": "immersiveengineering:material", "data": 8 },
|
||||
{ "item": "immersiveengineering:material", "data": 9 }
|
||||
],
|
||||
"name": "anyMechanicalComponent"
|
||||
},
|
||||
{
|
||||
"ingredient": [
|
||||
{ "item": "immersiveengineering:connector", "data": 12 },
|
||||
{ "item": "immersiveengineering:connector", "data": 13 }
|
||||
],
|
||||
"name": "anyDirectedRedstoneConnector"
|
||||
},
|
||||
{
|
||||
"ingredient": [
|
||||
{ "type": "forge:ore_dict", "ore": "ingotBrick" },
|
||||
|
@ -129,6 +143,10 @@
|
|||
"ingredient": { "type": "forge:ore_dict", "ore": "blockGlass" },
|
||||
"name": "blockGlass"
|
||||
},
|
||||
{
|
||||
"ingredient": { "type": "forge:ore_dict", "ore": "dustRedstone" },
|
||||
"name": "dustRedstone"
|
||||
},
|
||||
{
|
||||
"ingredient": { "item": "minecraft:diamond", "data": 0 },
|
||||
"name": "itemDiamond"
|
||||
|
|
|
@ -8,11 +8,14 @@
|
|||
],
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"PPP"
|
||||
"PMP"
|
||||
],
|
||||
"key": {
|
||||
"P": {
|
||||
"item": "#itemFluidPipe"
|
||||
},
|
||||
"M": {
|
||||
"item": "#anyMechanicalComponent"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:grc",
|
||||
"result": "engineersdecor:straight_pipe_valve_redstone_analog",
|
||||
"required": ["engineersdecor:straight_pipe_valve_redstone"]
|
||||
}
|
||||
],
|
||||
"type": "minecraft:crafting_shapeless",
|
||||
"ingredients": [
|
||||
{ "item": "engineersdecor:straight_pipe_valve_redstone" }
|
||||
],
|
||||
"result": {
|
||||
"item": "engineersdecor:straight_pipe_valve_redstone_analog"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:grc",
|
||||
"result": "engineersdecor:straight_pipe_valve_redstone",
|
||||
"required": ["engineersdecor:straight_pipe_valve"]
|
||||
}
|
||||
],
|
||||
"type": "minecraft:crafting_shapeless",
|
||||
"ingredients": [
|
||||
{ "item": "engineersdecor:straight_pipe_valve" },
|
||||
{ "item": "#anyDirectedRedstoneConnector" }
|
||||
],
|
||||
"result": {
|
||||
"item": "engineersdecor:straight_pipe_valve_redstone"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:grc",
|
||||
"result": "engineersdecor:straight_pipe_valve_redstone",
|
||||
"required": ["engineersdecor:straight_pipe_valve_redstone_analog"]
|
||||
}
|
||||
],
|
||||
"type": "minecraft:crafting_shapeless",
|
||||
"ingredients": [
|
||||
{ "item": "engineersdecor:straight_pipe_valve_redstone_analog" }
|
||||
],
|
||||
"result": {
|
||||
"item": "engineersdecor:straight_pipe_valve_redstone"
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 624 B |
Binary file not shown.
After Width: | Height: | Size: 266 B |
Binary file not shown.
After Width: | Height: | Size: 615 B |
Loading…
Add table
Add a link
Reference in a new issue